From 9ddc22fa940d43d667bd0c585300854d615dd0e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Lepin?= Date: Tue, 26 May 2020 23:36:18 +0200 Subject: [PATCH] request(SetSceneTransitionOverride): override duration only if it is explicity set so or not already defined --- src/WSRequestHandler_Scenes.cpp | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/WSRequestHandler_Scenes.cpp b/src/WSRequestHandler_Scenes.cpp index bebea23f..27e0cf3c 100644 --- a/src/WSRequestHandler_Scenes.cpp +++ b/src/WSRequestHandler_Scenes.cpp @@ -154,7 +154,7 @@ RpcResponse WSRequestHandler::ReorderSceneItems(const RpcRequest& request) { * * @param {String} `sceneName` Name of the scene to switch to. * @param {String} `transitionName` Name of the transition to use. - * @param {int (Optional)} `transitionDuration` Duration in milliseconds of the transition if transition is not fixed. Defaults to the current transition duration specified in the UI if this value is not given. + * @param {int (Optional)} `transitionDuration` Duration in milliseconds of the transition if transition is not fixed. Defaults to the current duration specified in the UI if there is no current override and this value is not given. * * @api requests * @name SetSceneTransitionOverride @@ -182,16 +182,18 @@ RpcResponse WSRequestHandler::SetSceneTransitionOverride(const RpcRequest& reque return request.failed("requested transition does not exist"); } - int transitionOverrideDuration = ( - request.hasField("transitionDuration") - ? obs_data_get_int(request.parameters(), "transitionDuration") - : obs_frontend_get_transition_duration() - ); - OBSDataAutoRelease sourceData = obs_source_get_private_settings(source); obs_data_set_string(sourceData, "transition", transitionName.toUtf8().constData()); - obs_data_set_int(sourceData, "transition_duration", transitionOverrideDuration); + if (request.hasField("transitionDuration")) { + int transitionOverrideDuration = obs_data_get_int(request.parameters(), "transitionDuration"); + obs_data_set_int(sourceData, "transition_duration", transitionOverrideDuration); + } else if(!obs_data_has_user_value(sourceData, "transition_duration")) { + obs_data_set_int(sourceData, "transition_duration", + obs_frontend_get_transition_duration() + ); + } + return request.success(); } @@ -260,7 +262,7 @@ RpcResponse WSRequestHandler::GetSceneTransitionOverride(const RpcRequest& reque OBSDataAutoRelease sourceData = obs_source_get_private_settings(source); const char* transitionOverrideName = obs_data_get_string(sourceData, "transition"); - bool hasDurationOverride = obs_data_has_autoselect_value(sourceData, "transition_duration"); + bool hasDurationOverride = obs_data_has_user_value(sourceData, "transition_duration"); int transitionOverrideDuration = obs_data_get_int(sourceData, "transition_duration"); OBSDataAutoRelease fields = obs_data_create();