diff --git a/lib/utils/selection-helpers.cpp b/lib/utils/selection-helpers.cpp index 9016b833..391ee3e9 100644 --- a/lib/utils/selection-helpers.cpp +++ b/lib/utils/selection-helpers.cpp @@ -4,6 +4,10 @@ #include "source-helpers.hpp" #include "scene-group.hpp" +#if LIBOBS_API_VER < MAKE_SEMANTIC_VERSION(31, 1, 0) +#include "canvas-helpers.hpp" +#endif + #include #include @@ -38,7 +42,8 @@ static void hasFilterEnum(obs_source_t *, obs_source_t *filter, void *ptr) QStringList GetSourcesWithFilterNames() { - auto enumSourcesWithFilters = [](void *param, obs_source_t *source) { + static auto enumSourcesWithFilters = [](void *param, + obs_source_t *source) { if (!source) { return true; } @@ -53,7 +58,17 @@ QStringList GetSourcesWithFilterNames() QStringList list; obs_enum_sources(enumSourcesWithFilters, &list); + +#if LIBOBS_API_VER < MAKE_SEMANTIC_VERSION(31, 1, 0) obs_enum_scenes(enumSourcesWithFilters, &list); +#else + static const auto enumCanvases = [](void *listPtr, + obs_canvas_t *canvas) -> bool { + obs_canvas_enum_scenes(canvas, enumSourcesWithFilters, listPtr); + return true; + }; + obs_enum_canvases(enumCanvases, &list); +#endif return list; } diff --git a/plugins/base/utils/scene-item-selection.cpp b/plugins/base/utils/scene-item-selection.cpp index dee023db..f4a91b69 100644 --- a/plugins/base/utils/scene-item-selection.cpp +++ b/plugins/base/utils/scene-item-selection.cpp @@ -115,7 +115,8 @@ static int getCountOfSceneItemOccurance(const SceneSelection &s, obs_scene_enum_items(scene, countSceneItemName, data); return true; }; - obs_enum_scenes(enumScenes, &data); + OBSCanvasAutoRelease canvas = OBSGetStrongRef(s.GetCanvas()); + obs_canvas_enum_scenes(canvas, enumScenes, &data); } else { auto source = obs_weak_source_get_source(s.GetScene(false)); auto scene = obs_scene_from_source(source); @@ -589,7 +590,8 @@ static QStringList getSceneItemsList(SceneSelection &s) return true; }; - obs_enum_scenes(enumScenes, &names); + OBSCanvasAutoRelease canvas = OBSGetStrongRef(s.GetCanvas()); + obs_canvas_enum_scenes(canvas, enumScenes, &names); } else { auto source = obs_weak_source_get_source(s.GetScene(false)); auto scene = obs_scene_from_source(source);