diff --git a/src/utils/Obs.h b/src/utils/Obs.h index 6fcf4589..a41511e3 100644 --- a/src/utils/Obs.h +++ b/src/utils/Obs.h @@ -133,6 +133,7 @@ namespace Utils { namespace SearchHelper { obs_hotkey_t *GetHotkeyByName(std::string name); + obs_source_t *GetSceneTransitionByName(std::string name); // Increments source ref. Use OBSSourceAutoRelease obs_sceneitem_t *GetSceneItemByName(obs_scene_t *scene, std::string name); // Increments ref. Use OBSSceneItemAutoRelease } diff --git a/src/utils/Obs_SearchHelper.cpp b/src/utils/Obs_SearchHelper.cpp index c01ef21b..c39501f7 100644 --- a/src/utils/Obs_SearchHelper.cpp +++ b/src/utils/Obs_SearchHelper.cpp @@ -34,6 +34,26 @@ obs_hotkey_t *Utils::Obs::SearchHelper::GetHotkeyByName(std::string name) return nullptr; } +// Increments source ref. Use OBSSourceAutoRelease +obs_source_t *Utils::Obs::SearchHelper::GetSceneTransitionByName(std::string name) +{ + obs_frontend_source_list transitionList = {}; + obs_frontend_get_transitions(&transitionList); + + obs_source_t *ret = nullptr; + for (size_t i = 0; i < transitionList.sources.num; i++) { + obs_source_t *transition = transitionList.sources.array[i]; + if (obs_source_get_name(transition) == name) { + ret = obs_source_get_ref(transition); + break; + } + } + + obs_frontend_source_list_free(&transitionList); + + return ret; +} + // Increments item ref. Use OBSSceneItemAutoRelease obs_sceneitem_t *Utils::Obs::SearchHelper::GetSceneItemByName(obs_scene_t *scene, std::string name) {