UI: Fix replay buffer frontend event not triggering
The frontend API event OBS_FRONTEND_EVENT_REPLAY_BUFFER_SAVED was not being triggered when hotkeys were used because it was only set to trigger when the replay buffer button was clicked, not when a hotkey was used. This fixes it so that the frontend event sends a signal to the frontend so that hotkeys will actually work.
This commit is contained in:
parent
a38cd03e06
commit
3d51602690
@ -140,6 +140,13 @@ static void OBSReplayBufferStopping(void *data, calldata_t *params)
|
||||
UNUSED_PARAMETER(params);
|
||||
}
|
||||
|
||||
static void OBSReplayBufferSaved(void *data, calldata_t *)
|
||||
{
|
||||
BasicOutputHandler *output = static_cast<BasicOutputHandler *>(data);
|
||||
QMetaObject::invokeMethod(output->main, "ReplayBufferSaved",
|
||||
Qt::QueuedConnection);
|
||||
}
|
||||
|
||||
static void OBSStartVirtualCam(void *data, calldata_t *params)
|
||||
{
|
||||
BasicOutputHandler *output = static_cast<BasicOutputHandler *>(data);
|
||||
@ -437,6 +444,8 @@ SimpleOutput::SimpleOutput(OBSBasic *main_) : BasicOutputHandler(main_)
|
||||
replayBufferStopping.Connect(signal, "stopping",
|
||||
OBSReplayBufferStopping,
|
||||
this);
|
||||
replayBufferSaved.Connect(signal, "saved",
|
||||
OBSReplayBufferSaved, this);
|
||||
}
|
||||
|
||||
fileOutput = obs_output_create(
|
||||
|
@ -33,6 +33,7 @@ struct BasicOutputHandler {
|
||||
OBSSignal streamStopping;
|
||||
OBSSignal recordStopping;
|
||||
OBSSignal replayBufferStopping;
|
||||
OBSSignal replayBufferSaved;
|
||||
|
||||
inline BasicOutputHandler(OBSBasic *main_);
|
||||
|
||||
|
@ -6141,6 +6141,10 @@ void OBSBasic::ReplayBufferSave()
|
||||
obs_output_get_proc_handler(outputHandler->replayBuffer);
|
||||
proc_handler_call(ph, "save", &cd);
|
||||
calldata_free(&cd);
|
||||
}
|
||||
|
||||
void OBSBasic::ReplayBufferSaved()
|
||||
{
|
||||
if (api)
|
||||
api->on_event(OBS_FRONTEND_EVENT_REPLAY_BUFFER_SAVED);
|
||||
}
|
||||
|
@ -573,6 +573,7 @@ public slots:
|
||||
|
||||
void ReplayBufferStart();
|
||||
void ReplayBufferSave();
|
||||
void ReplayBufferSaved();
|
||||
void ReplayBufferStopping();
|
||||
void ReplayBufferStop(int code);
|
||||
|
||||
|
@ -646,6 +646,12 @@ static void replay_buffer_hotkey(void *data, obs_hotkey_id id,
|
||||
return;
|
||||
}
|
||||
|
||||
calldata_t cd = {0};
|
||||
|
||||
signal_handler_t *sh =
|
||||
obs_output_get_signal_handler(stream->output);
|
||||
signal_handler_signal(sh, "saved", &cd);
|
||||
|
||||
stream->save_ts = os_gettime_ns() / 1000LL;
|
||||
}
|
||||
}
|
||||
@ -679,6 +685,9 @@ static void *replay_buffer_create(obs_data_t *settings, obs_output_t *output)
|
||||
proc_handler_add(ph, "void get_last_replay(out string path)",
|
||||
get_last_replay, stream);
|
||||
|
||||
signal_handler_t *sh = obs_output_get_signal_handler(output);
|
||||
signal_handler_add(sh, "void saved()");
|
||||
|
||||
return stream;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user