RpcEvent: streamTime and recordingTime are optional

This commit is contained in:
Stéphane Lepin 2020-02-25 15:14:58 +01:00
parent c7b49b28c2
commit a0dce77a2f
5 changed files with 20 additions and 12 deletions

View File

@ -6,7 +6,7 @@ set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON) set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON) set(CMAKE_AUTOUIC ON)
set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_STANDARD_REQUIRED ON)
if (WIN32 OR APPLE) if (WIN32 OR APPLE)
include(external/FindLibObs.cmake) include(external/FindLibObs.cmake)

View File

@ -240,10 +240,17 @@ void WSEvents::FrontendEventHandler(enum obs_frontend_event event, void* private
void WSEvents::broadcastUpdate(const char* updateType, void WSEvents::broadcastUpdate(const char* updateType,
obs_data_t* additionalFields = nullptr) obs_data_t* additionalFields = nullptr)
{ {
uint64_t streamTime = getStreamingTime(); std::optional<uint64_t> streamTime;
uint64_t recordingTime = getRecordingTime(); if (obs_frontend_streaming_active()) {
RpcEvent event(QString(updateType), streamTime, recordingTime, additionalFields); streamTime = std::make_optional(getStreamingTime());
}
std::optional<uint64_t> recordingTime;
if (obs_frontend_recording_active()) {
recordingTime = std::make_optional(getRecordingTime());
}
RpcEvent event(QString(updateType), streamTime, recordingTime, additionalFields);
_srv->broadcast(event); _srv->broadcast(event);
} }

View File

@ -68,12 +68,12 @@ std::string OBSRemoteProtocol::encodeEvent(const RpcEvent& event)
obs_data_set_string(eventData, "update-type", updateType.toUtf8().constData()); obs_data_set_string(eventData, "update-type", updateType.toUtf8().constData());
if (obs_frontend_streaming_active()) { 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()); obs_data_set_string(eventData, "stream-timecode", streamingTimecode.toUtf8().constData());
} }
if (obs_frontend_recording_active()) { 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()); obs_data_set_string(eventData, "rec-timecode", recordingTimecode.toUtf8().constData());
} }

View File

@ -20,7 +20,7 @@ with this program. If not, see <https://www.gnu.org/licenses/>
RpcEvent::RpcEvent( RpcEvent::RpcEvent(
const QString& updateType, const QString& updateType,
uint64_t streamTime, uint64_t recordingTime, std::optional<uint64_t> streamTime, std::optional<uint64_t> recordingTime,
obs_data_t* additionalFields obs_data_t* additionalFields
) : ) :
_updateType(updateType), _updateType(updateType),

View File

@ -18,6 +18,7 @@ with this program. If not, see <https://www.gnu.org/licenses/>
#pragma once #pragma once
#include <optional>
#include <obs-data.h> #include <obs-data.h>
#include <QtCore/QString> #include <QtCore/QString>
@ -28,7 +29,7 @@ class RpcEvent
public: public:
explicit RpcEvent( explicit RpcEvent(
const QString& updateType, const QString& updateType,
uint64_t streamTime, uint64_t recordingTime, std::optional<uint64_t> streamTime, std::optional<uint64_t> recordingTime,
obs_data_t* additionalFields = nullptr obs_data_t* additionalFields = nullptr
); );
@ -37,12 +38,12 @@ public:
return _updateType; return _updateType;
} }
const uint64_t streamTime() const const std::optional<uint64_t> streamTime() const
{ {
return _streamTime; return _streamTime;
} }
const uint64_t recordingTime() const const std::optional<uint64_t> recordingTime() const
{ {
return _recordingTime; return _recordingTime;
} }
@ -54,7 +55,7 @@ public:
private: private:
QString _updateType; QString _updateType;
uint64_t _streamTime; std::optional<uint64_t> _streamTime;
uint64_t _recordingTime; std::optional<uint64_t> _recordingTime;
OBSDataAutoRelease _additionalFields; OBSDataAutoRelease _additionalFields;
}; };