From 1947a3cfd5623869f87de1f6f77984ff2a8e40dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Lepin?= Date: Wed, 30 Nov 2016 20:04:24 +0100 Subject: [PATCH] Fixes #14 --- Utils.cpp | 22 ++++++++++++++++++++++ Utils.h | 3 ++- WSRequestHandler.cpp | 2 +- 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/Utils.cpp b/Utils.cpp index 735601d0..ff0a6859 100644 --- a/Utils.cpp +++ b/Utils.cpp @@ -93,6 +93,28 @@ obs_sceneitem_t* Utils::GetSceneItemFromName(obs_source_t* source, const char* n return search.result; } +obs_source_t* Utils::GetTransitionFromName(const char *search_name) { + obs_source_t *found_transition = NULL; + + obs_frontend_source_list transition_list = {}; + obs_frontend_get_transitions(&transition_list); + + for (size_t i = 0; i < transition_list.sources.num; i++) { + obs_source_t *transition = transition_list.sources.array[i]; + + const char *transition_name = obs_source_get_name(transition); + if (strcmp(transition_name, search_name) == 0) { + found_transition = transition; + obs_source_addref(found_transition); + break; + } + } + + obs_frontend_source_list_free(&transition_list); + + return found_transition; +} + obs_data_array_t* Utils::GetScenes() { obs_frontend_source_list sceneList = {}; obs_frontend_get_scenes(&sceneList); diff --git a/Utils.h b/Utils.h index dd7d6828..776d135b 100644 --- a/Utils.h +++ b/Utils.h @@ -27,7 +27,8 @@ class Utils public: static obs_data_array_t* GetSceneItems(obs_source_t *source); static obs_data_t* GetSceneItemData(obs_scene_item *item); - static obs_sceneitem_t* GetSceneItemFromName(obs_source_t *source, const char* name); + static obs_sceneitem_t* GetSceneItemFromName(obs_source_t *source, const char *name); + static obs_source_t* GetTransitionFromName(const char *search_name); static obs_data_array_t* GetScenes(); static obs_data_t* GetSceneData(obs_source *source); diff --git a/WSRequestHandler.cpp b/WSRequestHandler.cpp index 7eeeefe5..58de6906 100644 --- a/WSRequestHandler.cpp +++ b/WSRequestHandler.cpp @@ -329,7 +329,7 @@ void WSRequestHandler::HandleGetCurrentTransition(WSRequestHandler *owner) { void WSRequestHandler::HandleSetCurrentTransition(WSRequestHandler *owner) { const char *name = obs_data_get_string(owner->_requestData, "transition-name"); - obs_source_t *transition = obs_get_source_by_name(name); + obs_source_t *transition = Utils::GetTransitionFromName(name); if (transition) { obs_frontend_set_current_transition(transition);