From 51ec3ede1f8aae6861aa527fbf9b50deaca153c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Lepin?= Date: Sun, 29 Mar 2020 21:42:10 +0200 Subject: [PATCH] utils: add GetSceneItemFromRequestField --- src/Utils.cpp | 15 +++++++++++++++ src/Utils.h | 1 + 2 files changed, 16 insertions(+) diff --git a/src/Utils.cpp b/src/Utils.cpp index a104e05c..e80e7e50 100644 --- a/src/Utils.cpp +++ b/src/Utils.cpp @@ -297,6 +297,21 @@ obs_sceneitem_t* Utils::GetSceneItemFromItem(obs_scene_t* scene, obs_data_t* ite return nullptr; } +obs_sceneitem_t* Utils::GetSceneItemFromRequestField(obs_scene_t* scene, obs_data_item_t* dataItem) +{ + obs_data_type dataType = obs_data_item_gettype(dataItem); + + if (dataType == OBS_DATA_OBJECT) { + OBSDataAutoRelease itemData = obs_data_item_get_obj(dataItem); + return GetSceneItemFromItem(scene, itemData); + } else if (dataType == OBS_DATA_STRING) { + const char* name = obs_data_item_get_string(dataItem); + 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 7ae51297..dbe2481f 100644 --- a/src/Utils.h +++ b/src/Utils.h @@ -43,6 +43,7 @@ namespace Utils { 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_sceneitem_t* GetSceneItemFromRequestField(obs_scene_t* scene, obs_data_item_t* dataItem); obs_scene_t* GetSceneFromNameOrCurrent(QString sceneName); obs_data_t* GetSceneItemPropertiesData(obs_sceneitem_t* item);