From 200abd3af00ca6e40d6aaa3fef93985c096f3515 Mon Sep 17 00:00:00 2001 From: Exeldro Date: Wed, 21 Aug 2024 09:54:28 +0200 Subject: [PATCH] UI: Force UpdateEditMenu on UI Thread --- UI/window-basic-main.cpp | 10 +++++++--- UI/window-basic-main.hpp | 4 ++-- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/UI/window-basic-main.cpp b/UI/window-basic-main.cpp index 64964f0b8..91bac6596 100644 --- a/UI/window-basic-main.cpp +++ b/UI/window-basic-main.cpp @@ -1993,7 +1993,7 @@ void OBSBasic::InitOBSCallbacks() { ProfileScope("OBSBasic::InitOBSCallbacks"); - signalHandlers.reserve(signalHandlers.size() + 7); + signalHandlers.reserve(signalHandlers.size() + 9); signalHandlers.emplace_back(obs_get_signal_handler(), "source_create", OBSBasic::SourceCreated, this); signalHandlers.emplace_back(obs_get_signal_handler(), "source_remove", @@ -2014,13 +2014,17 @@ void OBSBasic::InitOBSCallbacks() signalHandlers.emplace_back( obs_get_signal_handler(), "source_filter_add", [](void *data, calldata_t *) { - static_cast(data)->UpdateEditMenu(); + QMetaObject::invokeMethod(static_cast(data), + "UpdateEditMenu", + Qt::QueuedConnection); }, this); signalHandlers.emplace_back( obs_get_signal_handler(), "source_filter_remove", [](void *data, calldata_t *) { - static_cast(data)->UpdateEditMenu(); + QMetaObject::invokeMethod(static_cast(data), + "UpdateEditMenu", + Qt::QueuedConnection); }, this); } diff --git a/UI/window-basic-main.hpp b/UI/window-basic-main.hpp index aaca40237..5f6fea052 100644 --- a/UI/window-basic-main.hpp +++ b/UI/window-basic-main.hpp @@ -749,6 +749,8 @@ public slots: void PauseRecording(); void UnpauseRecording(); + void UpdateEditMenu(); + private slots: void on_actionMainUndo_triggered(); @@ -1045,8 +1047,6 @@ public: obs_data_array_t *undo_array, obs_data_array_t *redo_array); - void UpdateEditMenu(); - void SetDisplayAffinity(QWindow *window); QColor GetSelectionColor() const;