From bfcd16ea28e58b080de38a24293e3a7197d5107e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Lepin?= Date: Sun, 15 Mar 2020 22:33:44 +0100 Subject: [PATCH] requests(studio mode): fix crash when calling frontend_set_preview_program_mode --- src/WSRequestHandler_StudioMode.cpp | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/src/WSRequestHandler_StudioMode.cpp b/src/WSRequestHandler_StudioMode.cpp index 67928ee4..fb958f3b 100644 --- a/src/WSRequestHandler_StudioMode.cpp +++ b/src/WSRequestHandler_StudioMode.cpp @@ -133,7 +133,11 @@ RpcResponse WSRequestHandler::TransitionToProgram(const RpcRequest& request) { * @since 4.1.0 */ RpcResponse WSRequestHandler::EnableStudioMode(const RpcRequest& request) { - obs_frontend_set_preview_program_mode(true); + obs_queue_task(OBS_TASK_UI, [](void* param) { + obs_frontend_set_preview_program_mode(true); + + UNUSED_PARAMETER(param); + }, nullptr, true); return request.success(); } @@ -146,7 +150,12 @@ RpcResponse WSRequestHandler::EnableStudioMode(const RpcRequest& request) { * @since 4.1.0 */ RpcResponse WSRequestHandler::DisableStudioMode(const RpcRequest& request) { - obs_frontend_set_preview_program_mode(false); + obs_queue_task(OBS_TASK_UI, [](void* param) { + obs_frontend_set_preview_program_mode(false); + + UNUSED_PARAMETER(param); + }, nullptr, true); + return request.success(); } @@ -159,7 +168,12 @@ RpcResponse WSRequestHandler::DisableStudioMode(const RpcRequest& request) { * @since 4.1.0 */ RpcResponse WSRequestHandler::ToggleStudioMode(const RpcRequest& request) { - bool previewProgramMode = obs_frontend_preview_program_mode_active(); - obs_frontend_set_preview_program_mode(!previewProgramMode); + obs_queue_task(OBS_TASK_UI, [](void* param) { + bool previewProgramMode = obs_frontend_preview_program_mode_active(); + obs_frontend_set_preview_program_mode(!previewProgramMode); + + UNUSED_PARAMETER(param); + }, nullptr, true); + return request.success(); }