mirror of
https://github.com/Palakis/obs-websocket.git
synced 2024-08-30 18:12:16 +00:00
events: fix crash caused by early StreamStatus call
This commit is contained in:
parent
c476649f3e
commit
a99da27ff6
@ -19,7 +19,6 @@
|
||||
|
||||
#include <util/platform.h>
|
||||
|
||||
#include <QTimer>
|
||||
#include <QPushButton>
|
||||
|
||||
#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) {
|
||||
|
@ -24,6 +24,7 @@ with this program. If not, see <https://www.gnu.org/licenses/>
|
||||
|
||||
#include <QListWidgetItem>
|
||||
#include <QSharedPointer>
|
||||
#include <QtCore/QTimer>
|
||||
|
||||
#include "WSServer.h"
|
||||
|
||||
@ -63,6 +64,8 @@ private:
|
||||
static WSEventsPtr _instance;
|
||||
|
||||
WSServerPtr _srv;
|
||||
QTimer streamStatusTimer;
|
||||
QTimer heartbeatTimer;
|
||||
OBSSource currentScene;
|
||||
|
||||
bool pulse;
|
||||
|
Loading…
x
Reference in New Issue
Block a user