scenes: rename SetSceneItemOrder to ReorderSceneItems + fix item freeing

This commit is contained in:
Stéphane L 2018-12-30 14:47:59 +01:00
parent e310c7d744
commit 3c7570d814
3 changed files with 10 additions and 6 deletions

View File

@ -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 },

View File

@ -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);

View File

@ -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();
} }