mirror of
https://github.com/Palakis/obs-websocket.git
synced 2024-08-30 18:12:16 +00:00
scenes: rename SetSceneItemOrder to ReorderSceneItems + fix item freeing
This commit is contained in:
parent
e310c7d744
commit
3c7570d814
@ -38,7 +38,6 @@ QHash<QString, void(*)(WSRequestHandler*)> WSRequestHandler::messageMap {
|
|||||||
{ "GetCurrentScene", WSRequestHandler::HandleGetCurrentScene },
|
{ "GetCurrentScene", WSRequestHandler::HandleGetCurrentScene },
|
||||||
{ "GetSceneList", WSRequestHandler::HandleGetSceneList },
|
{ "GetSceneList", WSRequestHandler::HandleGetSceneList },
|
||||||
|
|
||||||
{ "SetSceneItemOrder", WSRequestHandler::HandleSetSceneItemOrder },
|
|
||||||
{ "SetSourceRender", WSRequestHandler::HandleSetSceneItemRender }, // Retrocompat
|
{ "SetSourceRender", WSRequestHandler::HandleSetSceneItemRender }, // Retrocompat
|
||||||
{ "SetSceneItemRender", WSRequestHandler::HandleSetSceneItemRender },
|
{ "SetSceneItemRender", WSRequestHandler::HandleSetSceneItemRender },
|
||||||
{ "SetSceneItemPosition", WSRequestHandler::HandleSetSceneItemPosition },
|
{ "SetSceneItemPosition", WSRequestHandler::HandleSetSceneItemPosition },
|
||||||
@ -49,6 +48,7 @@ QHash<QString, void(*)(WSRequestHandler*)> WSRequestHandler::messageMap {
|
|||||||
{ "ResetSceneItem", WSRequestHandler::HandleResetSceneItem },
|
{ "ResetSceneItem", WSRequestHandler::HandleResetSceneItem },
|
||||||
{ "DeleteSceneItem", WSRequestHandler::HandleDeleteSceneItem },
|
{ "DeleteSceneItem", WSRequestHandler::HandleDeleteSceneItem },
|
||||||
{ "DuplicateSceneItem", WSRequestHandler::HandleDuplicateSceneItem },
|
{ "DuplicateSceneItem", WSRequestHandler::HandleDuplicateSceneItem },
|
||||||
|
{ "ReorderSceneItems", WSRequestHandler::HandleReorderSceneItems },
|
||||||
|
|
||||||
{ "GetStreamingStatus", WSRequestHandler::HandleGetStreamingStatus },
|
{ "GetStreamingStatus", WSRequestHandler::HandleGetStreamingStatus },
|
||||||
{ "StartStopStreaming", WSRequestHandler::HandleStartStopStreaming },
|
{ "StartStopStreaming", WSRequestHandler::HandleStartStopStreaming },
|
||||||
|
@ -66,7 +66,6 @@ class WSRequestHandler : public QObject {
|
|||||||
static void HandleGetCurrentScene(WSRequestHandler* req);
|
static void HandleGetCurrentScene(WSRequestHandler* req);
|
||||||
static void HandleGetSceneList(WSRequestHandler* req);
|
static void HandleGetSceneList(WSRequestHandler* req);
|
||||||
|
|
||||||
static void HandleSetSceneItemOrder(WSRequestHandler* req);
|
|
||||||
static void HandleSetSceneItemRender(WSRequestHandler* req);
|
static void HandleSetSceneItemRender(WSRequestHandler* req);
|
||||||
static void HandleSetSceneItemPosition(WSRequestHandler* req);
|
static void HandleSetSceneItemPosition(WSRequestHandler* req);
|
||||||
static void HandleSetSceneItemTransform(WSRequestHandler* req);
|
static void HandleSetSceneItemTransform(WSRequestHandler* req);
|
||||||
@ -76,6 +75,7 @@ class WSRequestHandler : public QObject {
|
|||||||
static void HandleResetSceneItem(WSRequestHandler* req);
|
static void HandleResetSceneItem(WSRequestHandler* req);
|
||||||
static void HandleDuplicateSceneItem(WSRequestHandler* req);
|
static void HandleDuplicateSceneItem(WSRequestHandler* req);
|
||||||
static void HandleDeleteSceneItem(WSRequestHandler* req);
|
static void HandleDeleteSceneItem(WSRequestHandler* req);
|
||||||
|
static void HandleReorderSceneItems(WSRequestHandler* req);
|
||||||
|
|
||||||
static void HandleGetStreamingStatus(WSRequestHandler* req);
|
static void HandleGetStreamingStatus(WSRequestHandler* req);
|
||||||
static void HandleStartStopStreaming(WSRequestHandler* req);
|
static void HandleStartStopStreaming(WSRequestHandler* req);
|
||||||
|
@ -90,11 +90,11 @@ void WSRequestHandler::HandleGetSceneList(WSRequestHandler* req) {
|
|||||||
* @param {String (optional)} `items[].name` Name of a scene item. Sufficiently unique if no scene items share sources within the scene.
|
* @param {String (optional)} `items[].name` Name of a scene item. Sufficiently unique if no scene items share sources within the scene.
|
||||||
*
|
*
|
||||||
* @api requests
|
* @api requests
|
||||||
* @name SetSceneItemOrder
|
* @name ReorderSceneItems
|
||||||
* @category scenes
|
* @category scenes
|
||||||
* @since 4.5.0
|
* @since 4.5.0
|
||||||
*/
|
*/
|
||||||
void WSRequestHandler::HandleSetSceneItemOrder(WSRequestHandler* req) {
|
void WSRequestHandler::HandleReorderSceneItems(WSRequestHandler* req) {
|
||||||
QString sceneName = obs_data_get_string(req->data, "scene");
|
QString sceneName = obs_data_get_string(req->data, "scene");
|
||||||
OBSSourceAutoRelease scene = Utils::GetSceneFromNameOrCurrent(sceneName);
|
OBSSourceAutoRelease scene = Utils::GetSceneFromNameOrCurrent(sceneName);
|
||||||
if (!scene) {
|
if (!scene) {
|
||||||
@ -113,7 +113,7 @@ void WSRequestHandler::HandleSetSceneItemOrder(WSRequestHandler* req) {
|
|||||||
std::vector<obs_sceneitem_t*> newOrder;
|
std::vector<obs_sceneitem_t*> newOrder;
|
||||||
newOrder.reserve(count);
|
newOrder.reserve(count);
|
||||||
|
|
||||||
for (size_t i = 0; i < count; i++) {
|
for (size_t i = 0; i < count; ++i) {
|
||||||
OBSDataAutoRelease item = obs_data_array_item(items, i);
|
OBSDataAutoRelease item = obs_data_array_item(items, i);
|
||||||
|
|
||||||
OBSSceneItemAutoRelease sceneItem = Utils::GetSceneItemFromItem(scene, item);
|
OBSSceneItemAutoRelease sceneItem = Utils::GetSceneItemFromItem(scene, item);
|
||||||
@ -124,7 +124,7 @@ void WSRequestHandler::HandleSetSceneItemOrder(WSRequestHandler* req) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (size_t j = 0; j <= i; j++) {
|
for (size_t j = 0; j <= i; ++j) {
|
||||||
if (sceneItem == newOrder[j]) {
|
if (sceneItem == newOrder[j]) {
|
||||||
req->SendErrorResponse("Duplicate sceneItem in specified order");
|
req->SendErrorResponse("Duplicate sceneItem in specified order");
|
||||||
return;
|
return;
|
||||||
@ -140,5 +140,9 @@ void WSRequestHandler::HandleSetSceneItemOrder(WSRequestHandler* req) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (auto const& item: newOrder) {
|
||||||
|
obs_sceneitem_release(item);
|
||||||
|
}
|
||||||
|
|
||||||
req->SendOKResponse();
|
req->SendOKResponse();
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user