mirror of
https://github.com/Palakis/obs-websocket.git
synced 2024-08-30 18:12:16 +00:00
events: fix filter events docs + refactor filters list getter
This commit is contained in:
parent
e86d1aad02
commit
fcaac3d515
@ -667,3 +667,35 @@ obs_data_t* Utils::GetSceneItemPropertiesData(obs_sceneitem_t* sceneItem) {
|
|||||||
|
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
obs_data_array_t* Utils::GetSourceFiltersList(obs_source_t* source, bool includeSettings)
|
||||||
|
{
|
||||||
|
struct enum_params {
|
||||||
|
obs_data_array_t* filters;
|
||||||
|
bool includeSettings;
|
||||||
|
};
|
||||||
|
|
||||||
|
if (!source) {
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
struct enum_params enumParams;
|
||||||
|
|
||||||
|
enumParams.filters = obs_data_array_create();
|
||||||
|
enumParams.includeSettings = includeSettings;
|
||||||
|
|
||||||
|
obs_source_enum_filters(source, [](obs_source_t* parent, obs_source_t* child, void* param)
|
||||||
|
{
|
||||||
|
auto enumParams = reinterpret_cast<struct enum_params*>(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);
|
||||||
|
}, &enumParams);
|
||||||
|
|
||||||
|
return enumParams.filters;
|
||||||
|
}
|
@ -43,6 +43,8 @@ class Utils {
|
|||||||
static obs_source_t* GetTransitionFromName(QString transitionName);
|
static obs_source_t* GetTransitionFromName(QString transitionName);
|
||||||
static obs_source_t* GetSceneFromNameOrCurrent(QString sceneName);
|
static obs_source_t* GetSceneFromNameOrCurrent(QString sceneName);
|
||||||
static obs_data_t* GetSceneItemPropertiesData(obs_sceneitem_t* item);
|
static obs_data_t* GetSceneItemPropertiesData(obs_sceneitem_t* item);
|
||||||
|
|
||||||
|
static obs_data_array_t* GetSourceFiltersList(obs_source_t* source, bool includeSettings);
|
||||||
|
|
||||||
static bool IsValidAlignment(const uint32_t alignment);
|
static bool IsValidAlignment(const uint32_t alignment);
|
||||||
|
|
||||||
|
@ -998,7 +998,6 @@ void WSEvents::OnSourceRename(void* param, calldata_t* data) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const char* previousName = calldata_get_string(data, "prev_name");
|
const char* previousName = calldata_get_string(data, "prev_name");
|
||||||
// TODO check?
|
|
||||||
|
|
||||||
OBSDataAutoRelease fields = obs_data_create();
|
OBSDataAutoRelease fields = obs_data_create();
|
||||||
obs_data_set_string(fields, "previousName", previousName);
|
obs_data_set_string(fields, "previousName", previousName);
|
||||||
@ -1010,6 +1009,9 @@ void WSEvents::OnSourceRename(void* param, calldata_t* data) {
|
|||||||
* A filter was added to a source.
|
* A filter was added to a source.
|
||||||
*
|
*
|
||||||
* @return {String} `sourceName` Source name
|
* @return {String} `sourceName` Source name
|
||||||
|
* @return {String} `filterName` Filter name
|
||||||
|
* @return {String} `filterType` Filter type
|
||||||
|
* @return {Object} `filterSettings` Filter settings
|
||||||
*
|
*
|
||||||
* @api events
|
* @api events
|
||||||
* @name SourceFilterAdded
|
* @name SourceFilterAdded
|
||||||
@ -1034,6 +1036,7 @@ void WSEvents::OnSourceFilterAdded(void* param, calldata_t* data) {
|
|||||||
OBSDataAutoRelease fields = obs_data_create();
|
OBSDataAutoRelease fields = obs_data_create();
|
||||||
obs_data_set_string(fields, "sourceName", obs_source_get_name(source));
|
obs_data_set_string(fields, "sourceName", obs_source_get_name(source));
|
||||||
obs_data_set_string(fields, "filterName", obs_source_get_name(filter));
|
obs_data_set_string(fields, "filterName", obs_source_get_name(filter));
|
||||||
|
obs_data_set_string(fields, "filterType", obs_source_get_id(filter));
|
||||||
obs_data_set_obj(fields, "filterSettings", filterSettings);
|
obs_data_set_obj(fields, "filterSettings", filterSettings);
|
||||||
self->broadcastUpdate("SourceFilterAdded", fields);
|
self->broadcastUpdate("SourceFilterAdded", fields);
|
||||||
}
|
}
|
||||||
@ -1042,6 +1045,8 @@ void WSEvents::OnSourceFilterAdded(void* param, calldata_t* data) {
|
|||||||
* A filter was removed from a source.
|
* A filter was removed from a source.
|
||||||
*
|
*
|
||||||
* @return {String} `sourceName` Source name
|
* @return {String} `sourceName` Source name
|
||||||
|
* @return {String} `filterName` Filter name
|
||||||
|
* @return {String} `filterType` Filter type
|
||||||
*
|
*
|
||||||
* @api events
|
* @api events
|
||||||
* @name SourceFilterRemoved
|
* @name SourceFilterRemoved
|
||||||
@ -1061,6 +1066,7 @@ void WSEvents::OnSourceFilterRemoved(void* param, calldata_t* data) {
|
|||||||
OBSDataAutoRelease fields = obs_data_create();
|
OBSDataAutoRelease fields = obs_data_create();
|
||||||
obs_data_set_string(fields, "sourceName", obs_source_get_name(source));
|
obs_data_set_string(fields, "sourceName", obs_source_get_name(source));
|
||||||
obs_data_set_string(fields, "filterName", obs_source_get_name(filter));
|
obs_data_set_string(fields, "filterName", obs_source_get_name(filter));
|
||||||
|
obs_data_set_string(fields, "filterType", obs_source_get_id(filter));
|
||||||
self->broadcastUpdate("SourceFilterRemoved", fields);
|
self->broadcastUpdate("SourceFilterRemoved", fields);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1068,6 +1074,9 @@ void WSEvents::OnSourceFilterRemoved(void* param, calldata_t* data) {
|
|||||||
* Filters in a source have been reordered.
|
* Filters in a source have been reordered.
|
||||||
*
|
*
|
||||||
* @return {String} `sourceName` Source name
|
* @return {String} `sourceName` Source name
|
||||||
|
* @return {Array<Object>} `filters` Ordered Filters list
|
||||||
|
* @return {String} `filters.*.name` Filter name
|
||||||
|
* @return {String} `filters.*.type` Filter type
|
||||||
*
|
*
|
||||||
* @api events
|
* @api events
|
||||||
* @name SourceFiltersReordered
|
* @name SourceFiltersReordered
|
||||||
@ -1082,9 +1091,11 @@ void WSEvents::OnSourceFilterOrderChanged(void* param, calldata_t* data) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
OBSDataArrayAutoRelease filters = Utils::GetSourceFiltersList(source, false);
|
||||||
|
|
||||||
OBSDataAutoRelease fields = obs_data_create();
|
OBSDataAutoRelease fields = obs_data_create();
|
||||||
obs_data_set_string(fields, "sourceName", obs_source_get_name(source));
|
obs_data_set_string(fields, "sourceName", obs_source_get_name(source));
|
||||||
// TODO filters list
|
obs_data_set_array(fields, "filters", filters);
|
||||||
self->broadcastUpdate("SourceFiltersReordered", fields);
|
self->broadcastUpdate("SourceFiltersReordered", fields);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1090,16 +1090,7 @@ HandlerResponse WSRequestHandler::HandleGetSourceFilters(WSRequestHandler* req)
|
|||||||
return req->SendErrorResponse("specified source doesn't exist");
|
return req->SendErrorResponse("specified source doesn't exist");
|
||||||
}
|
}
|
||||||
|
|
||||||
OBSDataArrayAutoRelease filters = obs_data_array_create();
|
OBSDataArrayAutoRelease filters = Utils::GetSourceFiltersList(source, true);
|
||||||
obs_source_enum_filters(source, [](obs_source_t *parent, obs_source_t *child, void *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));
|
|
||||||
obs_data_set_obj(filter, "settings", obs_source_get_settings(child));
|
|
||||||
obs_data_array_push_back((obs_data_array_t*)param, filter);
|
|
||||||
|
|
||||||
}, filters);
|
|
||||||
|
|
||||||
OBSDataAutoRelease response = obs_data_create();
|
OBSDataAutoRelease response = obs_data_create();
|
||||||
obs_data_set_array(response, "filters", filters);
|
obs_data_set_array(response, "filters", filters);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user