UI: Cleanup frontend event handling

This adds a function to OBSBasic to call on_event, so every
time a event is called, the api variable doesn't have to be
checked everytime.
This commit is contained in:
cg2121
2024-06-18 14:18:22 -05:00
committed by Lain
parent 0306effc5f
commit 89554112c1
6 changed files with 73 additions and 130 deletions

View File

@@ -619,10 +619,8 @@ OBSBasic::OBSBasic(QWidget *parent)
connect(ui->scenes, &SceneTree::scenesReordered,
[]() { OBSProjector::UpdateMultiviewProjectors(); });
connect(App(), &OBSApp::StyleChanged, this, [this]() {
if (api)
api->on_event(OBS_FRONTEND_EVENT_THEME_CHANGED);
});
connect(App(), &OBSApp::StyleChanged, this,
[this]() { OnEvent(OBS_FRONTEND_EVENT_THEME_CHANGED); });
QActionGroup *actionGroup = new QActionGroup(this);
actionGroup->addAction(ui->actionSceneListMode);
@@ -1470,10 +1468,8 @@ retryScene:
if (vcamEnabled)
outputHandler->UpdateVirtualCamOutputSource();
if (api) {
api->on_event(OBS_FRONTEND_EVENT_SCENE_CHANGED);
api->on_event(OBS_FRONTEND_EVENT_PREVIEW_SCENE_CHANGED);
}
OnEvent(OBS_FRONTEND_EVENT_SCENE_CHANGED);
OnEvent(OBS_FRONTEND_EVENT_PREVIEW_SCENE_CHANGED);
}
#define SERVICE_PATH "service.json"
@@ -2549,8 +2545,7 @@ void OBSBasic::OBSInit()
void OBSBasic::OnFirstLoad()
{
if (api)
api->on_event(OBS_FRONTEND_EVENT_FINISHED_LOADING);
OnEvent(OBS_FRONTEND_EVENT_FINISHED_LOADING);
#ifdef WHATSNEW_ENABLED
/* Attempt to load init screen if available */
@@ -3376,8 +3371,7 @@ void OBSBasic::AddScene(OBSSource source)
OBSProjector::UpdateMultiviewProjectors();
}
if (api)
api->on_event(OBS_FRONTEND_EVENT_SCENE_LIST_CHANGED);
OnEvent(OBS_FRONTEND_EVENT_SCENE_LIST_CHANGED);
}
void OBSBasic::RemoveScene(OBSSource source)
@@ -3412,8 +3406,7 @@ void OBSBasic::RemoveScene(OBSSource source)
OBSProjector::UpdateMultiviewProjectors();
}
if (api)
api->on_event(OBS_FRONTEND_EVENT_SCENE_LIST_CHANGED);
OnEvent(OBS_FRONTEND_EVENT_SCENE_LIST_CHANGED);
}
static bool select_one(obs_scene_t * /* scene */, obs_sceneitem_t *item,
@@ -4505,8 +4498,7 @@ void OBSBasic::RemoveSelectedScene()
RemoveSceneAndReleaseNested(source);
if (api)
api->on_event(OBS_FRONTEND_EVENT_SCENE_LIST_CHANGED);
OnEvent(OBS_FRONTEND_EVENT_SCENE_LIST_CHANGED);
}
void OBSBasic::ReorderSources(OBSScene scene)
@@ -5131,8 +5123,7 @@ void OBSBasic::ClearSceneData()
obs_enum_scenes(cb, nullptr);
obs_enum_sources(cb, nullptr);
if (api)
api->on_event(OBS_FRONTEND_EVENT_SCENE_COLLECTION_CLEANUP);
OnEvent(OBS_FRONTEND_EVENT_SCENE_COLLECTION_CLEANUP);
undo_s.clear();
@@ -5304,8 +5295,7 @@ void OBSBasic::closeEvent(QCloseEvent *event)
ClearExtraBrowserDocks();
#endif
if (api)
api->on_event(OBS_FRONTEND_EVENT_SCRIPTING_SHUTDOWN);
OnEvent(OBS_FRONTEND_EVENT_SCRIPTING_SHUTDOWN);
disableSaving++;
@@ -5313,8 +5303,7 @@ void OBSBasic::closeEvent(QCloseEvent *event)
* sources, etc) so that all references are released before shutdown */
ClearSceneData();
if (api)
api->on_event(OBS_FRONTEND_EVENT_EXIT);
OnEvent(OBS_FRONTEND_EVENT_EXIT);
// Destroys the frontend API so plugins can't continue calling it
obs_frontend_set_callbacks_internal(nullptr);
@@ -5554,8 +5543,7 @@ void OBSBasic::on_scenes_currentItemChanged(QListWidgetItem *current,
if (vcamEnabled && vcamConfig.type == VCamOutputType::PreviewOutput)
outputHandler->UpdateVirtualCamOutputSource();
if (api)
api->on_event(OBS_FRONTEND_EVENT_PREVIEW_SCENE_CHANGED);
OnEvent(OBS_FRONTEND_EVENT_PREVIEW_SCENE_CHANGED);
UpdateContextBar();
}
@@ -6898,8 +6886,7 @@ void OBSBasic::SceneNameEdited(QWidget *editor)
ui->scenesDock->addAction(renameScene);
if (api)
api->on_event(OBS_FRONTEND_EVENT_SCENE_LIST_CHANGED);
OnEvent(OBS_FRONTEND_EVENT_SCENE_LIST_CHANGED);
}
void OBSBasic::OpenFilters(OBSSource source)
@@ -7132,8 +7119,7 @@ void OBSBasic::StartStreaming()
return;
}
if (api)
api->on_event(OBS_FRONTEND_EVENT_STREAMING_STARTING);
OnEvent(OBS_FRONTEND_EVENT_STREAMING_STARTING);
SaveProject();
@@ -7490,8 +7476,7 @@ void OBSBasic::StreamDelayStopping(int sec)
ui->statusbar->StreamDelayStopping(sec);
if (api)
api->on_event(OBS_FRONTEND_EVENT_STREAMING_STOPPING);
OnEvent(OBS_FRONTEND_EVENT_STREAMING_STOPPING);
}
void OBSBasic::StreamingStart()
@@ -7522,8 +7507,7 @@ void OBSBasic::StreamingStart()
}
#endif
if (api)
api->on_event(OBS_FRONTEND_EVENT_STREAMING_STARTED);
OnEvent(OBS_FRONTEND_EVENT_STREAMING_STARTED);
OnActivate();
@@ -7543,8 +7527,7 @@ void OBSBasic::StreamStopping()
sysTrayStream->setText(QTStr("Basic.Main.StoppingStreaming"));
streamingStopping = true;
if (api)
api->on_event(OBS_FRONTEND_EVENT_STREAMING_STOPPING);
OnEvent(OBS_FRONTEND_EVENT_STREAMING_STOPPING);
}
void OBSBasic::StreamingStop(int code, QString last_error)
@@ -7605,8 +7588,7 @@ void OBSBasic::StreamingStop(int code, QString last_error)
}
streamingStopping = false;
if (api)
api->on_event(OBS_FRONTEND_EVENT_STREAMING_STOPPED);
OnEvent(OBS_FRONTEND_EVENT_STREAMING_STOPPED);
OnDeactivate();
@@ -7738,8 +7720,7 @@ void OBSBasic::StartRecording()
return;
}
if (api)
api->on_event(OBS_FRONTEND_EVENT_RECORDING_STARTING);
OnEvent(OBS_FRONTEND_EVENT_RECORDING_STARTING);
SaveProject();
@@ -7754,8 +7735,7 @@ void OBSBasic::RecordStopping()
sysTrayRecord->setText(QTStr("Basic.Main.StoppingRecording"));
recordingStopping = true;
if (api)
api->on_event(OBS_FRONTEND_EVENT_RECORDING_STOPPING);
OnEvent(OBS_FRONTEND_EVENT_RECORDING_STOPPING);
}
void OBSBasic::StopRecording()
@@ -7777,8 +7757,7 @@ void OBSBasic::RecordingStart()
sysTrayRecord->setText(QTStr("Basic.Main.StopRecording"));
recordingStopping = false;
if (api)
api->on_event(OBS_FRONTEND_EVENT_RECORDING_STARTED);
OnEvent(OBS_FRONTEND_EVENT_RECORDING_STARTED);
if (!diskFullTimer->isActive())
diskFullTimer->start(1000);
@@ -7852,8 +7831,7 @@ void OBSBasic::RecordingStop(int code, QString last_error)
}
}
if (api)
api->on_event(OBS_FRONTEND_EVENT_RECORDING_STOPPED);
OnEvent(OBS_FRONTEND_EVENT_RECORDING_STOPPED);
if (diskFullTimer->isActive())
diskFullTimer->stop();
@@ -7924,8 +7902,7 @@ void OBSBasic::StartReplayBuffer()
return;
}
if (api)
api->on_event(OBS_FRONTEND_EVENT_REPLAY_BUFFER_STARTING);
OnEvent(OBS_FRONTEND_EVENT_REPLAY_BUFFER_STARTING);
SaveProject();
@@ -7947,8 +7924,7 @@ void OBSBasic::ReplayBufferStopping()
QTStr("Basic.Main.StoppingReplayBuffer"));
replayBufferStopping = true;
if (api)
api->on_event(OBS_FRONTEND_EVENT_REPLAY_BUFFER_STOPPING);
OnEvent(OBS_FRONTEND_EVENT_REPLAY_BUFFER_STOPPING);
}
void OBSBasic::StopReplayBuffer()
@@ -7976,8 +7952,7 @@ void OBSBasic::ReplayBufferStart()
QTStr("Basic.Main.StopReplayBuffer"));
replayBufferStopping = false;
if (api)
api->on_event(OBS_FRONTEND_EVENT_REPLAY_BUFFER_STARTED);
OnEvent(OBS_FRONTEND_EVENT_REPLAY_BUFFER_STARTED);
OnActivate();
@@ -8016,8 +7991,7 @@ void OBSBasic::ReplayBufferSaved()
lastReplay = path;
calldata_free(&cd);
if (api)
api->on_event(OBS_FRONTEND_EVENT_REPLAY_BUFFER_SAVED);
OnEvent(OBS_FRONTEND_EVENT_REPLAY_BUFFER_SAVED);
AutoRemux(QT_UTF8(path.c_str()));
}
@@ -8061,8 +8035,7 @@ void OBSBasic::ReplayBufferStop(int code)
QSystemTrayIcon::Warning);
}
if (api)
api->on_event(OBS_FRONTEND_EVENT_REPLAY_BUFFER_STOPPED);
OnEvent(OBS_FRONTEND_EVENT_REPLAY_BUFFER_STOPPED);
OnDeactivate();
}
@@ -8104,8 +8077,7 @@ void OBSBasic::OnVirtualCamStart()
if (sysTrayVirtualCam)
sysTrayVirtualCam->setText(QTStr("Basic.Main.StopVirtualCam"));
if (api)
api->on_event(OBS_FRONTEND_EVENT_VIRTUALCAM_STARTED);
OnEvent(OBS_FRONTEND_EVENT_VIRTUALCAM_STARTED);
OnActivate();
@@ -8122,8 +8094,7 @@ void OBSBasic::OnVirtualCamStop(int)
if (sysTrayVirtualCam)
sysTrayVirtualCam->setText(QTStr("Basic.Main.StartVirtualCam"));
if (api)
api->on_event(OBS_FRONTEND_EVENT_VIRTUALCAM_STOPPED);
OnEvent(OBS_FRONTEND_EVENT_VIRTUALCAM_STOPPED);
blog(LOG_INFO, VIRTUAL_CAM_STOP);
@@ -10751,8 +10722,7 @@ void OBSBasic::PauseRecording()
trayIconFile));
}
if (api)
api->on_event(OBS_FRONTEND_EVENT_RECORDING_PAUSED);
OnEvent(OBS_FRONTEND_EVENT_RECORDING_PAUSED);
if (os_atomic_load_bool(&replaybuf_active))
ShowReplayBufferPauseWarning();
@@ -10789,8 +10759,7 @@ void OBSBasic::UnpauseRecording()
trayIconFile));
}
if (api)
api->on_event(OBS_FRONTEND_EVENT_RECORDING_UNPAUSED);
OnEvent(OBS_FRONTEND_EVENT_RECORDING_UNPAUSED);
}
}
@@ -11114,3 +11083,9 @@ float OBSBasic::GetDevicePixelRatio()
{
return dpi;
}
void OBSBasic::OnEvent(enum obs_frontend_event event)
{
if (api)
api->on_event(event);
}