diff --git a/dialogs/exportdialog.cpp b/dialogs/exportdialog.cpp index 0ff349cc1..737e92cc0 100644 --- a/dialogs/exportdialog.cpp +++ b/dialogs/exportdialog.cpp @@ -529,6 +529,7 @@ void ExportDialog::update_progress_bar(int value, qint64 remaining_ms) { } void ExportDialog::on_renderCancel_clicked() { + panel_sequence_viewer->viewer_widget->force_quit = true; et->continueEncode = false; cancelled = true; } diff --git a/panels/viewer.h b/panels/viewer.h index d7b5f1d53..547efdf7b 100644 --- a/panels/viewer.h +++ b/panels/viewer.h @@ -57,7 +57,7 @@ public: bool is_recording_cued(); long recording_start; long recording_end; - int recording_track; + int recording_track; void reset_all_audio(); void assert_audio_device(); diff --git a/ui/viewerwidget.cpp b/ui/viewerwidget.cpp index fa1e62ce2..d0730a725 100644 --- a/ui/viewerwidget.cpp +++ b/ui/viewerwidget.cpp @@ -736,6 +736,7 @@ GLuint ViewerWidget::compose_sequence(QVector& nests, bool render_audio) void ViewerWidget::paintGL() { drawn_gizmos = false; + force_quit = false; if (viewer->seq != NULL) { gizmos = NULL; @@ -784,6 +785,7 @@ void ViewerWidget::paintGL() { p.drawLine(playhead_x, 0, playhead_x, height()); } + if (force_quit) break; if (texture_failed) { if (rendering) { dout << "[INFO] Texture failed - looping"; diff --git a/ui/viewerwidget.h b/ui/viewerwidget.h index 55f68a654..1b7abc7d5 100644 --- a/ui/viewerwidget.h +++ b/ui/viewerwidget.h @@ -33,6 +33,8 @@ public: bool waveform; Clip* waveform_clip; MediaStream* waveform_ms; + + bool force_quit; public slots: void delete_function(); protected: