From bfa6cd0e19530e4d866448c6249ceda4c66a338b Mon Sep 17 00:00:00 2001 From: Juliane Holzt Date: Thu, 9 Jul 2020 00:43:54 +0200 Subject: [PATCH 1/2] TakeSourceScreenshot: default to current scene --- src/WSRequestHandler_Sources.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/WSRequestHandler_Sources.cpp b/src/WSRequestHandler_Sources.cpp index 6287783f..85471581 100644 --- a/src/WSRequestHandler_Sources.cpp +++ b/src/WSRequestHandler_Sources.cpp @@ -1623,7 +1623,7 @@ RpcResponse WSRequestHandler::SetAudioMonitorType(const RpcRequest& request) * Clients can specify `width` and `height` parameters to receive scaled pictures. Aspect ratio is * preserved if only one of these two parameters is specified. * -* @param {String} `sourceName` Source name. Note that, since scenes are also sources, you can also provide a scene name. +* @param {String} `sourceName` Source name. Note that, since scenes are also sources, you can also provide a scene name. If an empty string is provided, the currently active scene is used. * @param {String (optional)} `embedPictureFormat` Format of the Data URI encoded picture. Can be "png", "jpg", "jpeg" or "bmp" (or any other value supported by Qt's Image module) * @param {String (optional)} `saveToFilePath` Full file path (file extension included) where the captured image is to be saved. Can be in a format different from `pictureFormat`. Can be a relative path. * @param {String (optional)} `fileFormat` Format to save the image file as (one of the values provided in the `supported-image-export-formats` response field of `GetVersion`). If not specified, tries to guess based on file extension. @@ -1650,7 +1650,14 @@ RpcResponse WSRequestHandler::TakeSourceScreenshot(const RpcRequest& request) { } const char* sourceName = obs_data_get_string(request.parameters(), "sourceName"); - OBSSourceAutoRelease source = obs_get_source_by_name(sourceName); + + OBSSourceAutoRelease source; + if (strlen(sourceName) == 0) { + source = obs_frontend_get_current_scene(); + } else { + source = obs_get_source_by_name(sourceName); + } + if (!source) { return request.failed("specified source doesn't exist");; } From 31a505f4a455d42dca1f96af009689de78b56cb6 Mon Sep 17 00:00:00 2001 From: Juliane Holzt Date: Thu, 9 Jul 2020 00:50:29 +0200 Subject: [PATCH 2/2] Do it when sourceName is omitted --- src/WSRequestHandler_Sources.cpp | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/src/WSRequestHandler_Sources.cpp b/src/WSRequestHandler_Sources.cpp index 85471581..d8cfebee 100644 --- a/src/WSRequestHandler_Sources.cpp +++ b/src/WSRequestHandler_Sources.cpp @@ -1623,7 +1623,7 @@ RpcResponse WSRequestHandler::SetAudioMonitorType(const RpcRequest& request) * Clients can specify `width` and `height` parameters to receive scaled pictures. Aspect ratio is * preserved if only one of these two parameters is specified. * -* @param {String} `sourceName` Source name. Note that, since scenes are also sources, you can also provide a scene name. If an empty string is provided, the currently active scene is used. +* @param {String (optional)} `sourceName` Source name. Note that, since scenes are also sources, you can also provide a scene name. If not provided, the currently active scene is used. * @param {String (optional)} `embedPictureFormat` Format of the Data URI encoded picture. Can be "png", "jpg", "jpeg" or "bmp" (or any other value supported by Qt's Image module) * @param {String (optional)} `saveToFilePath` Full file path (file extension included) where the captured image is to be saved. Can be in a format different from `pictureFormat`. Can be a relative path. * @param {String (optional)} `fileFormat` Format to save the image file as (one of the values provided in the `supported-image-export-formats` response field of `GetVersion`). If not specified, tries to guess based on file extension. @@ -1641,25 +1641,19 @@ RpcResponse WSRequestHandler::SetAudioMonitorType(const RpcRequest& request) * @since 4.6.0 */ RpcResponse WSRequestHandler::TakeSourceScreenshot(const RpcRequest& request) { - if (!request.hasField("sourceName")) { - return request.failed("missing request parameters"); - } - if (!request.hasField("embedPictureFormat") && !request.hasField("saveToFilePath")) { return request.failed("At least 'embedPictureFormat' or 'saveToFilePath' must be specified"); } - const char* sourceName = obs_data_get_string(request.parameters(), "sourceName"); - OBSSourceAutoRelease source; - if (strlen(sourceName) == 0) { + if (!request.hasField("sourceName")) { source = obs_frontend_get_current_scene(); } else { + const char* sourceName = obs_data_get_string(request.parameters(), "sourceName"); source = obs_get_source_by_name(sourceName); - } - - if (!source) { - return request.failed("specified source doesn't exist");; + if (!source) { + return request.failed("specified source doesn't exist");; + } } const uint32_t sourceWidth = obs_source_get_base_width(source);