From bdb53d07f5aa170b85cd9644c7609d0a20260c23 Mon Sep 17 00:00:00 2001 From: asquelt Date: Fri, 14 Apr 2017 15:21:33 +0200 Subject: [PATCH] upstream proposed fix for #59 --- WSEvents.cpp | 21 +++++++++++---------- WSEvents.h | 1 + 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/WSEvents.cpp b/WSEvents.cpp index b33f748d..7acf6c79 100644 --- a/WSEvents.cpp +++ b/WSEvents.cpp @@ -69,16 +69,7 @@ WSEvents::WSEvents(WSServer *srv) transition_handler = nullptr; scene_handler = nullptr; - WSEvents* instance = this; - QTimer::singleShot(1000, [instance]() { - obs_source_t* transition = obs_frontend_get_current_transition(); - instance->connectTransitionSignals(transition); - obs_source_release(transition); - - obs_source_t* scene = obs_frontend_get_current_scene(); - instance->connectSceneSignals(scene); - obs_source_release(scene); - }); + QTimer::singleShot(1000, this, SLOT(deferredInitOperations())); _streaming_active = false; _recording_active = false; @@ -92,6 +83,16 @@ WSEvents::~WSEvents() obs_frontend_remove_event_callback(WSEvents::FrontendEventHandler, this); } +void WSEvents::deferredInitOperations() { + obs_source_t* transition = obs_frontend_get_current_transition(); + connectTransitionSignals(transition); + obs_source_release(transition); + + obs_source_t* scene = obs_frontend_get_current_scene(); + connectSceneSignals(scene); + obs_source_release(scene); +} + void WSEvents::FrontendEventHandler(enum obs_frontend_event event, void *private_data) { WSEvents *owner = static_cast(private_data); diff --git a/WSEvents.h b/WSEvents.h index aa8e6641..dca57947 100644 --- a/WSEvents.h +++ b/WSEvents.h @@ -37,6 +37,7 @@ class WSEvents : public QObject private Q_SLOTS: void StreamStatus(); void TransitionDurationChanged(int ms); + void deferredInitOperations(); private: WSServer *_srv;