From 4e2302936f2a8cb4f92cd9a240fcfd648624d57a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Lepin?= Date: Sun, 29 Mar 2020 21:41:38 +0200 Subject: [PATCH] refactor bits --- src/Utils.cpp | 56 +++++++++++++++++++++++++-------------------------- src/Utils.h | 4 ++-- 2 files changed, 30 insertions(+), 30 deletions(-) diff --git a/src/Utils.cpp b/src/Utils.cpp index 978162be..a104e05c 100644 --- a/src/Utils.cpp +++ b/src/Utils.cpp @@ -180,34 +180,6 @@ obs_data_t* Utils::GetSceneItemData(obs_sceneitem_t* item) { return data; } -obs_sceneitem_t* Utils::GetSceneItemFromItem(obs_scene_t* scene, obs_data_t* itemInfo) { - if (!scene) { - return nullptr; - } - - OBSDataItemAutoRelease idInfoItem = obs_data_item_byname(itemInfo, "id"); - int id = obs_data_item_get_int(idInfoItem); - - OBSDataItemAutoRelease nameInfoItem = obs_data_item_byname(itemInfo, "name"); - const char* name = obs_data_item_get_string(nameInfoItem); - - if (idInfoItem) { - obs_sceneitem_t* sceneItem = GetSceneItemFromId(scene, id); - obs_source_t* sceneItemSource = obs_sceneitem_get_source(sceneItem); - - QString sceneItemName = obs_source_get_name(sceneItemSource); - if (nameInfoItem && (QString(name) != sceneItemName)) { - return nullptr; - } - - return sceneItem; - } else if (nameInfoItem) { - return GetSceneItemFromName(scene, name); - } - - return nullptr; -} - obs_sceneitem_t* Utils::GetSceneItemFromName(obs_scene_t* scene, QString name) { if (!scene) { return nullptr; @@ -297,6 +269,34 @@ obs_sceneitem_t* Utils::GetSceneItemFromId(obs_scene_t* scene, int64_t id) { return search.result; } +obs_sceneitem_t* Utils::GetSceneItemFromItem(obs_scene_t* scene, obs_data_t* itemInfo) { + if (!scene) { + return nullptr; + } + + OBSDataItemAutoRelease idInfoItem = obs_data_item_byname(itemInfo, "id"); + int id = obs_data_item_get_int(idInfoItem); + + OBSDataItemAutoRelease nameInfoItem = obs_data_item_byname(itemInfo, "name"); + const char* name = obs_data_item_get_string(nameInfoItem); + + if (idInfoItem) { + obs_sceneitem_t* sceneItem = GetSceneItemFromId(scene, id); + obs_source_t* sceneItemSource = obs_sceneitem_get_source(sceneItem); + + QString sceneItemName = obs_source_get_name(sceneItemSource); + if (nameInfoItem && (QString(name) != sceneItemName)) { + return nullptr; + } + + return sceneItem; + } else if (nameInfoItem) { + return GetSceneItemFromName(scene, name); + } + + return nullptr; +} + bool Utils::IsValidAlignment(const uint32_t alignment) { switch (alignment) { case OBS_ALIGN_CENTER: diff --git a/src/Utils.h b/src/Utils.h index 5934ad4e..7ae51297 100644 --- a/src/Utils.h +++ b/src/Utils.h @@ -39,11 +39,11 @@ namespace Utils { obs_data_array_t* GetSceneItems(obs_source_t* source); obs_data_t* GetSceneItemData(obs_sceneitem_t* item); - // These two functions support nested lookup into groups + // These functions support nested lookup into groups obs_sceneitem_t* GetSceneItemFromName(obs_scene_t* scene, QString name); obs_sceneitem_t* GetSceneItemFromId(obs_scene_t* scene, int64_t id); - obs_sceneitem_t* GetSceneItemFromItem(obs_scene_t* scene, obs_data_t* item); + obs_scene_t* GetSceneFromNameOrCurrent(QString sceneName); obs_data_t* GetSceneItemPropertiesData(obs_sceneitem_t* item);