diff --git a/src/obs-websocket.cpp b/src/obs-websocket.cpp index 2f066ac0..9f19ab9e 100644 --- a/src/obs-websocket.cpp +++ b/src/obs-websocket.cpp @@ -61,10 +61,6 @@ bool obs_module_load(void) { _server = WSServerPtr(new WSServer()); _eventsSystem = WSEventsPtr(new WSEvents(_server)); - if (_config->ServerEnabled) { - _server->start(_config->ServerPort); - } - // UI setup obs_frontend_push_ui_translation(obs_module_get_string); QMainWindow* mainWindow = (QMainWindow*)obs_frontend_get_main_window(); @@ -81,6 +77,17 @@ bool obs_module_load(void) { settingsDialog->ToggleShowHide(); }); + // Setup event handler to start the server once OBS is ready + auto eventCallback = [](enum obs_frontend_event event, void *param) { + if (event == OBS_FRONTEND_EVENT_FINISHED_LOADING) { + if (_config->ServerEnabled) { + _server->start(_config->ServerPort); + } + obs_frontend_remove_event_callback((obs_frontend_event_cb)param, nullptr); + } + }; + obs_frontend_add_event_callback(eventCallback, (void*)(obs_frontend_event_cb)eventCallback); + // Loading finished blog(LOG_INFO, "module loaded!");