From bfb5570b7a8f995505ce4cd57c241de4f0fd8135 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20L?= <contact@slepin.fr> Date: Sun, 19 May 2019 15:50:44 +0200 Subject: [PATCH] scene item requests: defer updates to avoid triggering several transform events at once --- src/WSRequestHandler_SceneItems.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/WSRequestHandler_SceneItems.cpp b/src/WSRequestHandler_SceneItems.cpp index 5f5798be..fd5c138f 100644 --- a/src/WSRequestHandler_SceneItems.cpp +++ b/src/WSRequestHandler_SceneItems.cpp @@ -119,6 +119,8 @@ HandlerResponse WSRequestHandler::HandleSetSceneItemProperties(WSRequestHandler* bool badRequest = false; OBSDataAutoRelease errorMessage = obs_data_create(); + obs_sceneitem_defer_update_begin(sceneItem); + if (req->hasField("position")) { vec2 oldPosition; OBSDataAutoRelease positionError = obs_data_create(); @@ -248,6 +250,8 @@ HandlerResponse WSRequestHandler::HandleSetSceneItemProperties(WSRequestHandler* } } + obs_sceneitem_defer_update_end(sceneItem); + if (badRequest) { return req->SendErrorResponse(errorMessage); } @@ -430,8 +434,13 @@ HandlerResponse WSRequestHandler::HandleSetSceneItemTransform(WSRequestHandler* return req->SendErrorResponse("specified scene item doesn't exist"); } + obs_sceneitem_defer_update_begin(sceneItem); + obs_sceneitem_set_scale(sceneItem, &scale); obs_sceneitem_set_rot(sceneItem, rotation); + + obs_sceneitem_defer_update_end(sceneItem); + return req->SendOKResponse(); }