diff --git a/src/WSEvents.cpp b/src/WSEvents.cpp index 5be8e9eb..07bac4e3 100644 --- a/src/WSEvents.cpp +++ b/src/WSEvents.cpp @@ -1505,6 +1505,25 @@ void WSEvents::OnStudioModeSwitched(bool checked) { broadcastUpdate("StudioModeSwitched", data); } +/** + * A custom broadcast message was received + * + * @param {String} `realm` Identifier provided by the sender + * @param {Object} `data` User-defined data + * + * @api events + * @name BroadcastCustomMessage + * @category general + * @since 4.7.0 + */ +void WSEvents::OnBroadcastCustomMessage(QString realm, OBSDataAutoRelease data) { + OBSDataAutoRelease broadcastData = obs_data_create(); + obs_data_set_string(broadcastData, "realm", realm.toUtf8().constData()); + obs_data_set_obj(broadcastData, "data", data); + + broadcastUpdate("BroadcastCustomMessage", broadcastData); +} + /** * @typedef {Object} `OBSStats` * @property {double} `fps` Current framerate. diff --git a/src/WSEvents.h b/src/WSEvents.h index c6d83dcf..a35adcaa 100644 --- a/src/WSEvents.h +++ b/src/WSEvents.h @@ -49,8 +49,7 @@ public: const char* GetRecordingTimecode(); obs_data_t* GetStats(); - void broadcastUpdate(const char* updateType, - obs_data_t* additionalFields); + void OnBroadcastCustomMessage(QString realm, OBSDataAutoRelease data); bool HeartbeatIsActive; @@ -73,6 +72,9 @@ private: uint64_t _lastBytesSent; uint64_t _lastBytesSentTime; + void broadcastUpdate(const char* updateType, + obs_data_t* additionalFields); + void OnSceneChange(); void OnSceneListChange(); void OnSceneCollectionChange(); diff --git a/src/WSRequestHandler_General.cpp b/src/WSRequestHandler_General.cpp index dbb16039..59c6bedf 100644 --- a/src/WSRequestHandler_General.cpp +++ b/src/WSRequestHandler_General.cpp @@ -259,12 +259,7 @@ HandlerResponse WSRequestHandler::HandleBroadcastCustomMessage(WSRequestHandler* } auto events = GetEventsSystem(); - - OBSDataAutoRelease broadcastData = obs_data_create(); - obs_data_set_string(broadcastData, "realm", realm.toUtf8().constData()); - obs_data_set_obj(broadcastData, "data", data); - - events->broadcastUpdate("CustomMessage", broadcastData); + events->OnBroadcastCustomMessage(realm, data); return req->SendOKResponse(); }