From 6bc84e00aed175fbc8a2f308b2235db70ae9ba1d Mon Sep 17 00:00:00 2001 From: itsmattkc <34096995+itsmattkc@users.noreply.github.com> Date: Mon, 6 Jun 2022 20:17:28 -0700 Subject: [PATCH] viewer: add watcher destroyed slot Prevents crashes --- app/widget/viewer/viewer.cpp | 9 +++++++++ app/widget/viewer/viewer.h | 2 ++ 2 files changed, 11 insertions(+) diff --git a/app/widget/viewer/viewer.cpp b/app/widget/viewer/viewer.cpp index b5726864c..9581454a1 100644 --- a/app/widget/viewer/viewer.cpp +++ b/app/widget/viewer/viewer.cpp @@ -530,6 +530,14 @@ void ViewerWidget::CreateAddableAt(const QRectF &f) } } +void ViewerWidget::HandleFirstRequeueDestroy() +{ + // Extra protection to ensure we don't reference a destroyed object + if (first_requeue_watcher_ == sender()) { + first_requeue_watcher_ = nullptr; + } +} + void ViewerWidget::CloseAudioProcessor() { audio_processor_.Close(); @@ -676,6 +684,7 @@ void ViewerWidget::ForceRequeueFromCurrentTime() RenderTicketWatcher *watcher = RequestNextFrameForQueue(); if (!first_requeue_watcher_) { first_requeue_watcher_ = watcher; + connect(first_requeue_watcher_, &RenderTicketWatcher::destroyed, this, &ViewerWidget::HandleFirstRequeueDestroy); } } } diff --git a/app/widget/viewer/viewer.h b/app/widget/viewer/viewer.h index 6c58ed194..4a879c367 100644 --- a/app/widget/viewer/viewer.h +++ b/app/widget/viewer/viewer.h @@ -338,6 +338,8 @@ private slots: void CreateAddableAt(const QRectF &f); + void HandleFirstRequeueDestroy(); + }; }