From 8a2ccef8ec7c213eff51b591bf071c7679578395 Mon Sep 17 00:00:00 2001 From: WarmUpTill Date: Wed, 28 Dec 2022 16:00:52 +0100 Subject: [PATCH] Only return source from variable if source is a scene --- src/utils/scene-selection.cpp | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/utils/scene-selection.cpp b/src/utils/scene-selection.cpp index 03f3ebe9..4c4db5ba 100644 --- a/src/utils/scene-selection.cpp +++ b/src/utils/scene-selection.cpp @@ -84,6 +84,14 @@ void SceneSelection::Load(obs_data_t *obj, const char *name, obs_data_release(data); } +bool IsScene(const OBSWeakSource &source) +{ + auto s = obs_weak_source_get_source(source); + bool ret = !!obs_scene_from_source(s); + obs_source_release(s); + return ret; +} + OBSWeakSource SceneSelection::GetScene(bool advance) const { switch (_type) { @@ -113,7 +121,11 @@ OBSWeakSource SceneSelection::GetScene(bool advance) const if (!var) { return nullptr; } - return GetWeakSourceByName(var->Value().c_str()); + auto scene = GetWeakSourceByName(var->Value().c_str()); + if (IsScene(scene)) { + return scene; + } + return nullptr; } default: break;