diff --git a/UI/window-basic-main-transitions.cpp b/UI/window-basic-main-transitions.cpp index e0b930c2a..4f9d1eccc 100644 --- a/UI/window-basic-main-transitions.cpp +++ b/UI/window-basic-main-transitions.cpp @@ -735,6 +735,7 @@ void OBSBasic::SetCurrentScene(OBSSource scene, bool force) if (source == scene) { ui->scenes->blockSignals(true); + currentScene = itemScene.Get(); ui->scenes->setCurrentItem(item); ui->scenes->blockSignals(false); if (api) diff --git a/UI/window-basic-main.cpp b/UI/window-basic-main.cpp index af3ca29c3..0963607a4 100644 --- a/UI/window-basic-main.cpp +++ b/UI/window-basic-main.cpp @@ -2769,8 +2769,7 @@ OBSSource OBSBasic::GetProgramSource() OBSScene OBSBasic::GetCurrentScene() { - QListWidgetItem *item = ui->scenes->currentItem(); - return item ? GetOBSRef(item) : nullptr; + return currentScene.load(); } OBSSceneItem OBSBasic::GetSceneItem(QListWidgetItem *item) @@ -3960,6 +3959,7 @@ void OBSBasic::RemoveSelectedScene() QListWidgetItem *item = ui->scenes->takeItem(curIndex); ui->scenes->insertItem(savedIndex, item); ui->scenes->setCurrentRow(savedIndex); + currentScene = scene.Get(); ui->scenes->blockSignals(false); }; @@ -4964,6 +4964,10 @@ void OBSBasic::on_scenes_currentItemChanged(QListWidgetItem *current, scene = GetOBSRef(current); source = obs_scene_get_source(scene); + + currentScene = scene; + } else { + currentScene = NULL; } SetCurrentScene(source); @@ -5227,6 +5231,7 @@ void OBSBasic::ChangeSceneIndex(bool relative, int offset, int invalidIdx) ui->scenes->insertItem(idx + offset, item); ui->scenes->setCurrentRow(idx + offset); item->setSelected(true); + currentScene = GetOBSRef(item).Get(); ui->scenes->blockSignals(false); OBSProjector::UpdateMultiviewProjectors(); diff --git a/UI/window-basic-main.hpp b/UI/window-basic-main.hpp index 3d48d8244..248434db0 100644 --- a/UI/window-basic-main.hpp +++ b/UI/window-basic-main.hpp @@ -332,6 +332,8 @@ private: QScopedPointer patronJsonThread; std::string patronJson; + std::atomic currentScene = nullptr; + void UpdateMultiviewProjectorMenu(); void DrawBackdrop(float cx, float cy);