Adapt to support canvas API

This commit is contained in:
WarmUpTill 2025-10-12 19:53:03 +02:00 committed by WarmUpTill
parent 8f54e71e61
commit 0b77ef5081
2 changed files with 20 additions and 3 deletions

View File

@ -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 <obs-frontend-api.h>
#include <QStandardItemModel>
@ -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;
}

View File

@ -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);