diff --git a/CMakeLists.txt b/CMakeLists.txt index 520d4254..072b5c5b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,7 +6,7 @@ set(CMAKE_INCLUDE_CURRENT_DIR ON) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTOUIC ON) -set(CMAKE_CXX_STANDARD 11) +set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) if (WIN32 OR APPLE) include(external/FindLibObs.cmake) diff --git a/src/WSEvents.cpp b/src/WSEvents.cpp index 619aea7a..ab9cd1d2 100644 --- a/src/WSEvents.cpp +++ b/src/WSEvents.cpp @@ -240,10 +240,17 @@ void WSEvents::FrontendEventHandler(enum obs_frontend_event event, void* private void WSEvents::broadcastUpdate(const char* updateType, obs_data_t* additionalFields = nullptr) { - uint64_t streamTime = getStreamingTime(); - uint64_t recordingTime = getRecordingTime(); - RpcEvent event(QString(updateType), streamTime, recordingTime, additionalFields); + std::optional streamTime; + if (obs_frontend_streaming_active()) { + streamTime = std::make_optional(getStreamingTime()); + } + std::optional recordingTime; + if (obs_frontend_recording_active()) { + recordingTime = std::make_optional(getRecordingTime()); + } + + RpcEvent event(QString(updateType), streamTime, recordingTime, additionalFields); _srv->broadcast(event); } diff --git a/src/protocol/OBSRemoteProtocol.cpp b/src/protocol/OBSRemoteProtocol.cpp index e5b1da1a..4daf2ba3 100644 --- a/src/protocol/OBSRemoteProtocol.cpp +++ b/src/protocol/OBSRemoteProtocol.cpp @@ -68,12 +68,12 @@ std::string OBSRemoteProtocol::encodeEvent(const RpcEvent& event) obs_data_set_string(eventData, "update-type", updateType.toUtf8().constData()); if (obs_frontend_streaming_active()) { - QString streamingTimecode = Utils::nsToTimestamp(event.streamTime()); + QString streamingTimecode = Utils::nsToTimestamp(event.streamTime().value()); obs_data_set_string(eventData, "stream-timecode", streamingTimecode.toUtf8().constData()); } if (obs_frontend_recording_active()) { - QString recordingTimecode = Utils::nsToTimestamp(event.recordingTime()); + QString recordingTimecode = Utils::nsToTimestamp(event.recordingTime().value()); obs_data_set_string(eventData, "rec-timecode", recordingTimecode.toUtf8().constData()); } diff --git a/src/rpc/RpcEvent.cpp b/src/rpc/RpcEvent.cpp index a8d3b06b..a971b6a2 100644 --- a/src/rpc/RpcEvent.cpp +++ b/src/rpc/RpcEvent.cpp @@ -20,7 +20,7 @@ with this program. If not, see RpcEvent::RpcEvent( const QString& updateType, - uint64_t streamTime, uint64_t recordingTime, + std::optional streamTime, std::optional recordingTime, obs_data_t* additionalFields ) : _updateType(updateType), diff --git a/src/rpc/RpcEvent.h b/src/rpc/RpcEvent.h index 6dd0df99..af69a10e 100644 --- a/src/rpc/RpcEvent.h +++ b/src/rpc/RpcEvent.h @@ -18,6 +18,7 @@ with this program. If not, see #pragma once +#include #include #include @@ -28,7 +29,7 @@ class RpcEvent public: explicit RpcEvent( const QString& updateType, - uint64_t streamTime, uint64_t recordingTime, + std::optional streamTime, std::optional recordingTime, obs_data_t* additionalFields = nullptr ); @@ -37,12 +38,12 @@ public: return _updateType; } - const uint64_t streamTime() const + const std::optional streamTime() const { return _streamTime; } - const uint64_t recordingTime() const + const std::optional recordingTime() const { return _recordingTime; } @@ -54,7 +55,7 @@ public: private: QString _updateType; - uint64_t _streamTime; - uint64_t _recordingTime; + std::optional _streamTime; + std::optional _recordingTime; OBSDataAutoRelease _additionalFields; };