From 3e55b3d7bc04ddbda97ed3dc260d4ec3735a1747 Mon Sep 17 00:00:00 2001 From: Gavin Hamill Date: Tue, 8 Dec 2020 17:11:20 +0000 Subject: [PATCH 1/3] Request: add ID support for SetSceneItemRender --- src/WSRequestHandler_SceneItems.cpp | 30 ++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/src/WSRequestHandler_SceneItems.cpp b/src/WSRequestHandler_SceneItems.cpp index 659a8b9b..65af35d4 100644 --- a/src/WSRequestHandler_SceneItems.cpp +++ b/src/WSRequestHandler_SceneItems.cpp @@ -393,7 +393,8 @@ RpcResponse WSRequestHandler::ResetSceneItem(const RpcRequest& request) { * Show or hide a specified source item in a specified scene. * * @param {String (optional)} `scene-name` Name of the scene the scene item belongs to. Defaults to the currently active scene. -* @param {String} `source` Scene Item name. +* @param {String (optional)} `source` Scene Item name. +* @param {int (optional)} `item` Scene Item id * @param {boolean} `render` true = shown ; false = hidden * * @api requests @@ -402,16 +403,18 @@ RpcResponse WSRequestHandler::ResetSceneItem(const RpcRequest& request) { * @since 0.3 */ RpcResponse WSRequestHandler::SetSceneItemRender(const RpcRequest& request) { - if (!request.hasField("source") || - !request.hasField("render")) + if (!request.hasField("render") || + (!request.hasField("source") && !request.hasField("item")) + ) { return request.failed("missing request parameters"); } const char* itemName = obs_data_get_string(request.parameters(), "source"); + int64_t itemId = obs_data_get_int(request.parameters(), "item"); bool isVisible = obs_data_get_bool(request.parameters(), "render"); - if (!itemName) { + if (!itemName && !itemId) { return request.failed("invalid request parameters"); } @@ -421,12 +424,21 @@ RpcResponse WSRequestHandler::SetSceneItemRender(const RpcRequest& request) { return request.failed("requested scene doesn't exist"); } - OBSSceneItemAutoRelease sceneItem = - Utils::GetSceneItemFromName(scene, itemName); - if (!sceneItem) { - return request.failed("specified scene item doesn't exist"); - } + OBSSceneItemAutoRelease sceneItem; + if (strlen(itemName)) { + OBSDataItemAutoRelease itemField = obs_data_item_byname(request.parameters(), "source"); + sceneItem = Utils::GetSceneItemFromName(scene, itemName); + if (!sceneItem) { + return request.failed("specified scene item name doesn't exist"); + } + } else { + OBSDataItemAutoRelease itemField = obs_data_item_byname(request.parameters(), "item"); + sceneItem = Utils::GetSceneItemFromId(scene, itemId); + if (!sceneItem) { + return request.failed("specified scene item ID doesn't exist"); + } + } obs_sceneitem_set_visible(sceneItem, isVisible); return request.success(); } From 599eaf85ce3591e9ba3505e6a703584de1e77344 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Lepin?= Date: Thu, 28 Jan 2021 22:55:40 +0100 Subject: [PATCH 2/3] requests(SceneItems): remove unused variables --- src/WSRequestHandler_SceneItems.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/WSRequestHandler_SceneItems.cpp b/src/WSRequestHandler_SceneItems.cpp index 65af35d4..1f72e064 100644 --- a/src/WSRequestHandler_SceneItems.cpp +++ b/src/WSRequestHandler_SceneItems.cpp @@ -427,13 +427,11 @@ RpcResponse WSRequestHandler::SetSceneItemRender(const RpcRequest& request) { OBSSceneItemAutoRelease sceneItem; if (strlen(itemName)) { - OBSDataItemAutoRelease itemField = obs_data_item_byname(request.parameters(), "source"); sceneItem = Utils::GetSceneItemFromName(scene, itemName); if (!sceneItem) { return request.failed("specified scene item name doesn't exist"); } } else { - OBSDataItemAutoRelease itemField = obs_data_item_byname(request.parameters(), "item"); sceneItem = Utils::GetSceneItemFromId(scene, itemId); if (!sceneItem) { return request.failed("specified scene item ID doesn't exist"); From 6cbe50e3e7563e0fbf15f5cd6cd1012055df2db2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Lepin?= Date: Thu, 28 Jan 2021 22:56:01 +0100 Subject: [PATCH 3/3] request(SetSceneItemRender): refactor conditional --- src/WSRequestHandler_SceneItems.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/WSRequestHandler_SceneItems.cpp b/src/WSRequestHandler_SceneItems.cpp index 1f72e064..732fe619 100644 --- a/src/WSRequestHandler_SceneItems.cpp +++ b/src/WSRequestHandler_SceneItems.cpp @@ -403,9 +403,8 @@ RpcResponse WSRequestHandler::ResetSceneItem(const RpcRequest& request) { * @since 0.3 */ RpcResponse WSRequestHandler::SetSceneItemRender(const RpcRequest& request) { - if (!request.hasField("render") || - (!request.hasField("source") && !request.hasField("item")) - ) + bool doesntHaveSourceOrItemParameter = !(request.hasField("source") || request.hasField("item")); + if (!request.hasField("render") || doesntHaveSourceOrItemParameter) { return request.failed("missing request parameters"); }