diff --git a/src/WSEvents.cpp b/src/WSEvents.cpp index afa0efc0..ff6368c9 100644 --- a/src/WSEvents.cpp +++ b/src/WSEvents.cpp @@ -19,7 +19,6 @@ #include -#include #include #include "Config.h" @@ -28,6 +27,8 @@ #include "obs-websocket.h" +#define STATUS_INTERVAL 2000 + bool transitionIsCut(obs_source_t* transition) { if (!transition) return false; @@ -72,30 +73,29 @@ void WSEvents::ResetCurrent(WSServerPtr srv) { _instance = WSEventsPtr(new WSEvents(srv)); } -WSEvents::WSEvents(WSServerPtr srv) { - _srv = srv; +WSEvents::WSEvents(WSServerPtr srv) : + _srv(srv), + streamStatusTimer(), + currentScene(nullptr), + HeartbeatIsActive(false), + _streamStarttime(0), + _recStarttime(0), + pulse(false) +{ obs_frontend_add_event_callback(WSEvents::FrontendEventHandler, this); QSpinBox* durationControl = Utils::GetTransitionDurationControl(); connect(durationControl, SIGNAL(valueChanged(int)), this, SLOT(TransitionDurationChanged(int))); - QTimer* statusTimer = new QTimer(); - connect(statusTimer, SIGNAL(timeout()), + connect(&streamStatusTimer, SIGNAL(timeout()), this, SLOT(StreamStatus())); - pulse = false; - connect(statusTimer, SIGNAL(timeout()), + connect(&heartbeatTimer, SIGNAL(timeout()), this, SLOT(Heartbeat())); - statusTimer->start(2000); // equal to frontend's constant BITRATE_UPDATE_SECONDS - currentScene = nullptr; + heartbeatTimer.start(STATUS_INTERVAL); QTimer::singleShot(1000, this, SLOT(deferredInitOperations())); - - HeartbeatIsActive = false; - - _streamStarttime = 0; - _recStarttime = 0; } WSEvents::~WSEvents() { @@ -145,9 +145,13 @@ void WSEvents::FrontendEventHandler(enum obs_frontend_event event, void* private owner->OnStreamStarting(); } else if (event == OBS_FRONTEND_EVENT_STREAMING_STARTED) { + owner->streamStatusTimer.start(STATUS_INTERVAL); + owner->StreamStatus(); + owner->OnStreamStarted(); } else if (event == OBS_FRONTEND_EVENT_STREAMING_STOPPING) { + owner->streamStatusTimer.stop(); owner->OnStreamStopping(); } else if (event == OBS_FRONTEND_EVENT_STREAMING_STOPPED) { diff --git a/src/WSEvents.h b/src/WSEvents.h index 391706ca..f74766b2 100644 --- a/src/WSEvents.h +++ b/src/WSEvents.h @@ -24,6 +24,7 @@ with this program. If not, see #include #include +#include #include "WSServer.h" @@ -63,6 +64,8 @@ private: static WSEventsPtr _instance; WSServerPtr _srv; + QTimer streamStatusTimer; + QTimer heartbeatTimer; OBSSource currentScene; bool pulse;