Browse Source

UI: Force UpdateEditMenu on UI Thread

Exeldro 1 year ago
parent
commit
200abd3af0
2 changed files with 9 additions and 5 deletions
  1. 7 3
      UI/window-basic-main.cpp
  2. 2 2
      UI/window-basic-main.hpp

+ 7 - 3
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<OBSBasic *>(data)->UpdateEditMenu();
+			QMetaObject::invokeMethod(static_cast<OBSBasic *>(data),
+						  "UpdateEditMenu",
+						  Qt::QueuedConnection);
 		},
 		this);
 	signalHandlers.emplace_back(
 		obs_get_signal_handler(), "source_filter_remove",
 		[](void *data, calldata_t *) {
-			static_cast<OBSBasic *>(data)->UpdateEditMenu();
+			QMetaObject::invokeMethod(static_cast<OBSBasic *>(data),
+						  "UpdateEditMenu",
+						  Qt::QueuedConnection);
 		},
 		this);
 }

+ 2 - 2
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;