mirror of
https://github.com/Palakis/obs-websocket.git
synced 2024-08-30 18:12:16 +00:00
SourceOrderChanged: include scene items list
This commit is contained in:
parent
6b31ff7e79
commit
ed2726c9d2
@ -87,7 +87,7 @@ obs_data_array_t* Utils::GetSceneItems(obs_source_t* source) {
|
||||
obs_sceneitem_t* currentItem,
|
||||
void* param)
|
||||
{
|
||||
obs_data_array_t* data = static_cast<obs_data_array_t*>(param);
|
||||
obs_data_array_t* data = reinterpret_cast<obs_data_array_t*>(param);
|
||||
|
||||
OBSDataAutoRelease itemData = GetSceneItemData(currentItem);
|
||||
obs_data_array_insert(data, 0, itemData);
|
||||
@ -166,7 +166,7 @@ obs_sceneitem_t* Utils::GetSceneItemFromName(obs_source_t* source, QString name)
|
||||
obs_sceneitem_t* currentItem,
|
||||
void* param)
|
||||
{
|
||||
current_search* search = static_cast<current_search*>(param);
|
||||
current_search* search = reinterpret_cast<current_search*>(param);
|
||||
|
||||
QString currentItemName =
|
||||
obs_source_get_name(obs_sceneitem_get_source(currentItem));
|
||||
@ -202,7 +202,7 @@ obs_sceneitem_t* Utils::GetSceneItemFromId(obs_source_t* source, size_t id) {
|
||||
obs_sceneitem_t* currentItem,
|
||||
void* param)
|
||||
{
|
||||
current_search* search = static_cast<current_search*>(param);
|
||||
current_search* search = reinterpret_cast<current_search*>(param);
|
||||
|
||||
if (obs_sceneitem_get_id(currentItem) == search->query) {
|
||||
search->result = currentItem;
|
||||
@ -499,7 +499,7 @@ obs_hotkey_t* Utils::FindHotkeyByName(QString name) {
|
||||
search.result = nullptr;
|
||||
|
||||
obs_enum_hotkeys([](void* data, obs_hotkey_id id, obs_hotkey_t* hotkey) {
|
||||
current_search* search = static_cast<current_search*>(data);
|
||||
current_search* search = reinterpret_cast<current_search*>(data);
|
||||
|
||||
const char* hk_name = obs_hotkey_get_name(hotkey);
|
||||
if (hk_name == search->query) {
|
||||
|
@ -1101,6 +1101,9 @@ void WSEvents::OnSourceFilterOrderChanged(void* param, calldata_t* data) {
|
||||
* Scene items have been reordered.
|
||||
*
|
||||
* @return {String} `scene-name` Name of the scene where items have been reordered.
|
||||
* @return {Array<Object>} `scene-items` Ordered list of scene items
|
||||
* @return {String} `scene-items.*.source-name` Item source name
|
||||
* @return {int} `scene-items.*.item-id` Scene item unique ID
|
||||
*
|
||||
* @api events
|
||||
* @name SourceOrderChanged
|
||||
@ -1110,12 +1113,29 @@ void WSEvents::OnSourceFilterOrderChanged(void* param, calldata_t* data) {
|
||||
void WSEvents::OnSceneReordered(void* param, calldata_t* data) {
|
||||
auto instance = reinterpret_cast<WSEvents*>(param);
|
||||
|
||||
obs_scene_t* scene = nullptr;
|
||||
calldata_get_ptr(data, "scene", &scene);
|
||||
OBSScene scene = calldata_get_pointer<obs_scene_t>(data, "scene");
|
||||
if (!scene) {
|
||||
return;
|
||||
}
|
||||
|
||||
OBSDataArrayAutoRelease sceneItems = obs_data_array_create();
|
||||
obs_scene_enum_items(scene, [](obs_scene_t* scene, obs_sceneitem_t* sceneItem, void* param) {
|
||||
obs_data_array_t* sceneItems = reinterpret_cast<obs_data_array_t*>(param);
|
||||
|
||||
OBSSource itemSource = obs_sceneitem_get_source(sceneItem);
|
||||
|
||||
OBSDataAutoRelease item = obs_data_create();
|
||||
obs_data_set_string(item, "source-name", obs_source_get_name(itemSource));
|
||||
obs_data_set_int(item, "item-id", obs_sceneitem_get_id(sceneItem));
|
||||
obs_data_array_push_back(sceneItems, item);
|
||||
|
||||
return true;
|
||||
}, sceneItems);
|
||||
|
||||
OBSDataAutoRelease fields = obs_data_create();
|
||||
obs_data_set_string(fields, "scene-name",
|
||||
obs_source_get_name(obs_scene_get_source(scene)));
|
||||
obs_data_set_array(fields, "scene-items", sceneItems);
|
||||
|
||||
instance->broadcastUpdate("SourceOrderChanged", fields);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user