diff --git a/src/eventhandler/EventHandler.cpp b/src/eventhandler/EventHandler.cpp index 3b045358..22768980 100644 --- a/src/eventhandler/EventHandler.cpp +++ b/src/eventhandler/EventHandler.cpp @@ -1 +1,20 @@ #include "EventHandler.h" + +EventHandler::EventHandler(WebSocketServerPtr webSocketServer) : + _webSocketServer(webSocketServer) +{ + _cpuUsageInfo = os_cpu_usage_info_start(); + + obs_frontend_add_event_callback(EventHandler::OnFrontendEvent, this); +} + +EventHandler::~EventHandler() +{ + os_cpu_usage_info_destroy(_cpuUsageInfo); + + obs_frontend_remove_event_callback(EventHandler::OnFrontendEvent, this); +} + +void EventHandler::OnFrontendEvent(enum obs_frontend_event event, void *private_data) { + auto owner = reinterpret_cast(private_data); +} diff --git a/src/eventhandler/EventHandler.h b/src/eventhandler/EventHandler.h index 6f70f09b..4a535c26 100644 --- a/src/eventhandler/EventHandler.h +++ b/src/eventhandler/EventHandler.h @@ -1 +1,21 @@ #pragma once + +#include +#include +#include + +#include "../obs-websocket.h" +#include "../WebSocketServer.h" + +class EventHandler +{ + public: + EventHandler(WebSocketServerPtr webSocketServer); + ~EventHandler(); + + private: + WebSocketServerPtr _webSocketServer; + os_cpu_usage_info_t *_cpuUsageInfo; + + static void OnFrontendEvent(enum obs_frontend_event event, void *private_data); +}; diff --git a/src/obs-websocket.cpp b/src/obs-websocket.cpp index ce730c8c..77c67cac 100644 --- a/src/obs-websocket.cpp +++ b/src/obs-websocket.cpp @@ -21,7 +21,6 @@ void ___sceneitem_dummy_addref(obs_sceneitem_t*) {} void ___data_dummy_addref(obs_data_t*) {} void ___data_array_dummy_addref(obs_data_array_t*) {} void ___output_dummy_addref(obs_output_t*) {} - void ___data_item_dummy_addref(obs_data_item_t*) {} void ___data_item_release(obs_data_item_t* dataItem) { @@ -34,6 +33,7 @@ OBS_MODULE_USE_DEFAULT_LOCALE("obs-websocket", "en-US") ConfigPtr _config; WebSocketServerPtr _webSocketServer; +EventHandlerPtr _eventHandler; SettingsDialog *_settingsDialog = nullptr; bool obs_module_load(void) @@ -51,6 +51,8 @@ bool obs_module_load(void) _webSocketServer = WebSocketServerPtr(new WebSocketServer()); + _eventHandler = EventHandlerPtr(new EventHandler(_webSocketServer)); + obs_frontend_push_ui_translation(obs_module_get_string); QMainWindow* mainWindow = (QMainWindow*)obs_frontend_get_main_window(); _settingsDialog = new SettingsDialog(mainWindow); @@ -73,16 +75,18 @@ void obs_module_unload() { blog(LOG_INFO, "[obs_module_unload] Shutting down..."); - _config->FirstLoad = false; - _config->Save(); - if (_webSocketServer->IsListening()) { blog(LOG_INFO, "[obs_module_unload] WebSocket server is running. Stopping..."); _webSocketServer->Stop(); } - - _config.reset(); _webSocketServer.reset(); + + _eventHandler.reset(); + + _config->FirstLoad = false; + _config->Save(); + _config.reset(); + blog(LOG_INFO, "[obs_module_unload] Finished shutting down."); } @@ -95,3 +99,8 @@ WebSocketServerPtr GetWebSocketServer() { return _webSocketServer; } + +EventHandlerPtr GetEventHandler() +{ + return _eventHandler; +} diff --git a/src/obs-websocket.h b/src/obs-websocket.h index ae415696..b3d1986c 100644 --- a/src/obs-websocket.h +++ b/src/obs-websocket.h @@ -9,6 +9,8 @@ void ___sceneitem_dummy_addref(obs_sceneitem_t*); void ___data_dummy_addref(obs_data_t*); void ___data_array_dummy_addref(obs_data_array_t*); void ___output_dummy_addref(obs_output_t*); +void ___data_item_dummy_addref(obs_data_item_t*); +void ___data_item_release(obs_data_item_t*); using OBSSourceAutoRelease = OBSRef; @@ -20,9 +22,6 @@ using OBSDataArrayAutoRelease = OBSRef; using OBSOutputAutoRelease = OBSRef; - -void ___data_item_dummy_addref(obs_data_item_t*); -void ___data_item_release(obs_data_item_t*); using OBSDataItemAutoRelease = OBSRef;