From c2937d785710ac648cbd20269f33aac6e369b8bc Mon Sep 17 00:00:00 2001 From: Palakis Date: Wed, 25 Oct 2017 18:29:11 +0200 Subject: [PATCH] replay buffer: start without "Save" hotkey set --- Utils.cpp | 31 ++++++++++++++++++++++++++++++- Utils.h | 3 ++- WSRequestHandler.cpp | 13 ++----------- 3 files changed, 34 insertions(+), 13 deletions(-) diff --git a/Utils.cpp b/Utils.cpp index 79182700..2d0b4c44 100644 --- a/Utils.cpp +++ b/Utils.cpp @@ -459,7 +459,36 @@ bool Utils::ReplayBufferEnabled() { return false; } -bool Utils::RPHotkeySet() { +void Utils::StartReplayBuffer() { + if (obs_frontend_replay_buffer_active()) + return; + + if (!IsRPHotkeySet()) { + obs_output_t* rpOutput = obs_frontend_get_replay_buffer_output(); + OBSData outputHotkeys = obs_hotkeys_save_output(rpOutput); + + OBSData dummyBinding = obs_data_create(); + obs_data_set_bool(dummyBinding, "control", true); + obs_data_set_bool(dummyBinding, "alt", true); + obs_data_set_bool(dummyBinding, "shift", true); + obs_data_set_bool(dummyBinding, "command", true); + obs_data_set_string(dummyBinding, "key", "OBS_KEY_0"); + + OBSDataArray rpSaveHotkey = obs_data_get_array( + outputHotkeys, "ReplayBuffer.Save"); + obs_data_array_push_back(rpSaveHotkey, dummyBinding); + + obs_hotkeys_load_output(rpOutput, outputHotkeys); + obs_frontend_replay_buffer_start(); + + obs_output_release(rpOutput); + } + else { + obs_frontend_replay_buffer_start(); + } +} + +bool Utils::IsRPHotkeySet() { obs_output_t* rp_output = obs_frontend_get_replay_buffer_output(); obs_data_t *hotkeys = obs_hotkeys_save_output(rp_output); diff --git a/Utils.h b/Utils.h index 9564f041..1d8ce13c 100644 --- a/Utils.h +++ b/Utils.h @@ -73,7 +73,8 @@ class Utils { static QString* ParseDataToQueryString(obs_data_t * data); static obs_hotkey_t* FindHotkeyByName(const char* name); static bool ReplayBufferEnabled(); - static bool RPHotkeySet(); + static void StartReplayBuffer(); + static bool IsRPHotkeySet(); }; #endif // UTILS_H diff --git a/WSRequestHandler.cpp b/WSRequestHandler.cpp index cdc056a8..a104268b 100644 --- a/WSRequestHandler.cpp +++ b/WSRequestHandler.cpp @@ -705,11 +705,7 @@ void WSRequestHandler::HandleStartStopReplayBuffer(WSRequestHandler* req) { if (obs_frontend_replay_buffer_active()) { obs_frontend_replay_buffer_stop(); } else { - if (!Utils::RPHotkeySet()) { - req->SendErrorResponse("replay buffer hotkey not set"); - return; - } - obs_frontend_replay_buffer_start(); + Utils::StartReplayBuffer(); } req->SendOKResponse(); } @@ -737,12 +733,7 @@ void WSRequestHandler::HandleStartReplayBuffer(WSRequestHandler* req) { return; } - if (!Utils::RPHotkeySet()) { - req->SendErrorResponse("replay buffer hotkey not set"); - return; - } - - obs_frontend_replay_buffer_start(); + Utils::StartReplayBuffer(); req->SendOKResponse(); }