From b8fcf0355ce614aa4fadef4ccece894a24339a57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Lepin?= Date: Mon, 11 Nov 2019 12:44:13 +0100 Subject: [PATCH] requests(GetSourceFilters): add "enabled" status field --- src/Utils.cpp | 21 ++++++++++++++------- src/Utils.h | 1 + src/WSRequestHandler_Sources.cpp | 1 + 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/Utils.cpp b/src/Utils.cpp index ae8a2aa0..be5995e2 100644 --- a/src/Utils.cpp +++ b/src/Utils.cpp @@ -735,6 +735,18 @@ obs_data_t* Utils::GetSceneItemPropertiesData(obs_sceneitem_t* sceneItem) { return data; } +obs_data_t* Utils::GetSourceFilterInfo(obs_source_t* filter, bool includeSettings) +{ + obs_data_t* data = obs_data_create(); + obs_data_set_bool(data, "enabled", obs_source_enabled(filter)); + obs_data_set_string(data, "type", obs_source_get_id(filter)); + obs_data_set_string(data, "name", obs_source_get_name(filter)); + if (includeSettings) { + obs_data_set_obj(data, "settings", obs_source_get_settings(filter)); + } + return data; +} + obs_data_array_t* Utils::GetSourceFiltersList(obs_source_t* source, bool includeSettings) { struct enum_params { @@ -755,13 +767,8 @@ obs_data_array_t* Utils::GetSourceFiltersList(obs_source_t* source, bool include { auto enumParams = reinterpret_cast(param); - OBSDataAutoRelease filter = obs_data_create(); - obs_data_set_string(filter, "type", obs_source_get_id(child)); - obs_data_set_string(filter, "name", obs_source_get_name(child)); - if (enumParams->includeSettings) { - obs_data_set_obj(filter, "settings", obs_source_get_settings(child)); - } - obs_data_array_push_back(enumParams->filters, filter); + OBSDataAutoRelease filterData = Utils::GetSourceFilterInfo(child, enumParams->includeSettings); + obs_data_array_push_back(enumParams->filters, filterData); }, &enumParams); return enumParams.filters; diff --git a/src/Utils.h b/src/Utils.h index 6de57eec..89f01acc 100644 --- a/src/Utils.h +++ b/src/Utils.h @@ -48,6 +48,7 @@ class Utils { static obs_scene_t* GetSceneFromNameOrCurrent(QString sceneName); static obs_data_t* GetSceneItemPropertiesData(obs_sceneitem_t* item); + static obs_data_t* GetSourceFilterInfo(obs_source_t* filter, bool includeSettings); static obs_data_array_t* GetSourceFiltersList(obs_source_t* source, bool includeSettings); static bool IsValidAlignment(const uint32_t alignment); diff --git a/src/WSRequestHandler_Sources.cpp b/src/WSRequestHandler_Sources.cpp index 87ff010a..9e5716d0 100644 --- a/src/WSRequestHandler_Sources.cpp +++ b/src/WSRequestHandler_Sources.cpp @@ -1061,6 +1061,7 @@ HandlerResponse WSRequestHandler::HandleGetSpecialSources(WSRequestHandler* req) * @param {String} `sourceName` Source name * * @return {Array} `filters` List of filters for the specified source +* @return {Boolean} `filters.*.enabled` Filter status (enabled or not) * @return {String} `filters.*.type` Filter type * @return {String} `filters.*.name` Filter name * @return {Object} `filters.*.settings` Filter settings