Przeglądaj źródła

UI: Fix possible crash due to UI property access from graphics thread

Selection state can change by main thread while UI thread (which
calls DrawSpacingHelpers) tries to evaluate the amount of selected
items. Get amount of selected items by enumerating over the scene data
instead (which stays within the graphics thread).
PatTheMav 3 lat temu
rodzic
commit
e2db9b7f70
1 zmienionych plików z 6 dodań i 1 usunięć
  1. 6 1
      UI/window-basic-preview.cpp

+ 6 - 1
UI/window-basic-preview.cpp

@@ -2453,7 +2453,12 @@ void OBSBasicPreview::DrawSpacingHelpers()
 
 	OBSBasic *main = OBSBasic::Get();
 
-	if (main->ui->sources->selectionModel()->selectedIndexes().count() > 1)
+	vec2 s;
+	SceneFindBoxData data(s, s);
+
+	obs_scene_enum_items(main->GetCurrentScene(), FindSelected, &data);
+
+	if (data.sceneItems.size() > 1)
 		return;
 
 	OBSSceneItem item = main->GetCurrentSceneItem();