Merge pull request #687 from Palakis/feature/batch-delay

Requests: Add Sleep
This commit is contained in:
Stéphane Lepin 2021-02-28 03:16:37 +01:00 committed by GitHub
commit 6b05d0381e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 23 additions and 0 deletions

View File

@ -43,6 +43,7 @@ const QHash<QString, RpcMethodHandler> WSRequestHandler::messageMap{
{ "TriggerHotkeyByName", &WSRequestHandler::TriggerHotkeyByName },
{ "TriggerHotkeyBySequence", &WSRequestHandler::TriggerHotkeyBySequence },
{ "ExecuteBatch", &WSRequestHandler::ExecuteBatch },
{ "Sleep", &WSRequestHandler::Sleep },
// Category: Media Control
{ "PlayPauseMedia", &WSRequestHandler::PlayPauseMedia },

View File

@ -61,6 +61,7 @@ class WSRequestHandler {
RpcResponse TriggerHotkeyByName(const RpcRequest&);
RpcResponse TriggerHotkeyBySequence(const RpcRequest&);
RpcResponse ExecuteBatch(const RpcRequest&);
RpcResponse Sleep(const RpcRequest&);
// Category: Media Control
RpcResponse PlayPauseMedia(const RpcRequest&);

View File

@ -474,3 +474,24 @@ RpcResponse WSRequestHandler::ExecuteBatch(const RpcRequest& request) {
obs_data_set_array(response, "results", results);
return request.success(response);
}
/**
* Waits for the specified duration. Designed to be used in `ExecuteBatch` operations.
*
* @param {int} `sleepMillis` Delay in milliseconds to wait before continuing.
*
* @api requests
* @name Sleep
* @category general
* @since unreleased
*/
RpcResponse WSRequestHandler::Sleep(const RpcRequest& request) {
if (!request.hasField("sleepMillis")) {
return request.failed("missing request parameters");
}
long long sleepMillis = obs_data_get_int(request.parameters(), "sleepMillis");
std::this_thread::sleep_for(std::chrono::milliseconds(sleepMillis));
return request.success();
}