diff --git a/libobs/obs-scene.c b/libobs/obs-scene.c index c5ce68636..163ef334b 100644 --- a/libobs/obs-scene.c +++ b/libobs/obs-scene.c @@ -1649,6 +1649,15 @@ void obs_scene_addref(obs_scene_t *scene) obs_source_addref(scene->source); } +obs_scene_t *obs_scene_get_ref(obs_scene_t *scene) +{ + if (!scene) + return NULL; + if (obs_source_get_ref(scene->source) != NULL) + return scene; + return NULL; +} + void obs_scene_release(obs_scene_t *scene) { if (scene) diff --git a/libobs/obs.h b/libobs/obs.h index ade027525..17189b5a1 100644 --- a/libobs/obs.h +++ b/libobs/obs.h @@ -1593,6 +1593,8 @@ EXPORT obs_scene_t *obs_scene_duplicate(obs_scene_t *scene, const char *name, EXPORT void obs_scene_addref(obs_scene_t *scene); EXPORT void obs_scene_release(obs_scene_t *scene); +EXPORT obs_scene_t *obs_scene_get_ref(obs_scene_t *scene); + /** Gets the scene's source context */ EXPORT obs_source_t *obs_scene_get_source(const obs_scene_t *scene);