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