From 234484216398cf14f9003085a32a76b6ecd231b8 Mon Sep 17 00:00:00 2001 From: "Christopher P. Yarger" Date: Wed, 3 Mar 2021 19:18:57 -0500 Subject: [PATCH] Requests: Edit PlayPauseMedia (#685) * Request: Edit PlayPauseMedia Removed requirement for boolean paramater from PlayPauseMedia. Changed PlayPauseMedia to toggle play state if there is no boolean paramater. * Docs: Edit PlayPauseMedia This commit also fixes some syntax * will reset * Add missing star to L48 Co-authored-by: tt2468 --- src/WSRequestHandler_MediaControl.cpp | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/WSRequestHandler_MediaControl.cpp b/src/WSRequestHandler_MediaControl.cpp index 1b7a73bf..20df9681 100644 --- a/src/WSRequestHandler_MediaControl.cpp +++ b/src/WSRequestHandler_MediaControl.cpp @@ -44,9 +44,10 @@ QString getSourceMediaState(obs_source_t *source) /** * Pause or play a media source. Supports ffmpeg and vlc media sources (as of OBS v25.0.8) +* Note :Leaving out `playPause` toggles the current pause state * * @param {String} `sourceName` Source name. -* @param {boolean} `playPause` Whether to pause or play the source. `false` for play, `true` for pause. +* @param {boolean} `playPause` (optional) Whether to pause or play the source. `false` for play, `true` for pause. * * @api requests * @name PlayPauseMedia @@ -54,7 +55,7 @@ QString getSourceMediaState(obs_source_t *source) * @since 4.9.0 */ RpcResponse WSRequestHandler::PlayPauseMedia(const RpcRequest& request) { - if ((!request.hasField("sourceName")) || (!request.hasField("playPause"))) { + if (!request.hasField("sourceName")) { return request.failed("missing request parameters"); } @@ -68,8 +69,16 @@ RpcResponse WSRequestHandler::PlayPauseMedia(const RpcRequest& request) { if (!source) { return request.failed("specified source doesn't exist"); } - - obs_source_media_play_pause(source, playPause); + if (!request.hasField("playPause")) { + if (obs_source_media_get_state(source) == obs_media_state::OBS_MEDIA_STATE_PLAYING) { + obs_source_media_play_pause(source, true); + } else { + obs_source_media_play_pause(source, false); + } + } else { + bool playPause = obs_data_get_bool(request.parameters(), "playPause"); + obs_source_media_play_pause(source, playPause); + } return request.success(); }