From 88d3271c408e0b09fe485bfede877eaca46629e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Lepin?= Date: Thu, 18 Apr 2019 13:51:17 +0200 Subject: [PATCH] events: refactor signal connection to transitions --- src/WSEvents.cpp | 26 +++++--------------------- src/WSEvents.h | 2 -- 2 files changed, 5 insertions(+), 23 deletions(-) diff --git a/src/WSEvents.cpp b/src/WSEvents.cpp index c99c7d75..7630f5c8 100644 --- a/src/WSEvents.cpp +++ b/src/WSEvents.cpp @@ -94,10 +94,6 @@ WSEvents::WSEvents(WSServerPtr srv) : heartbeatTimer.start(STATUS_INTERVAL); - QTimer::singleShot(1000, this, [=]() { - hookTransitionBeginEvent(); - }); - signal_handler_t* coreSignalHandler = obs_get_signal_handler(); if (coreSignalHandler) { signal_handler_connect(coreSignalHandler, "source_create", OnSourceCreate, this); @@ -122,7 +118,6 @@ void WSEvents::FrontendEventHandler(enum obs_frontend_event event, void* private owner->OnSceneListChange(); } else if (event == OBS_FRONTEND_EVENT_SCENE_COLLECTION_CHANGED) { - owner->hookTransitionBeginEvent(); owner->OnSceneCollectionChange(); } else if (event == OBS_FRONTEND_EVENT_SCENE_COLLECTION_LIST_CHANGED) { @@ -132,7 +127,6 @@ void WSEvents::FrontendEventHandler(enum obs_frontend_event event, void* private owner->OnTransitionChange(); } else if (event == OBS_FRONTEND_EVENT_TRANSITION_LIST_CHANGED) { - owner->hookTransitionBeginEvent(); owner->OnTransitionListChange(); } else if (event == OBS_FRONTEND_EVENT_PROFILE_CHANGED) { @@ -225,20 +219,6 @@ void WSEvents::broadcastUpdate(const char* updateType, } } -void WSEvents::hookTransitionBeginEvent() { - obs_frontend_source_list transitions = {}; - obs_frontend_get_transitions(&transitions); - - for (int i = 0; i < transitions.sources.num; i++) { - obs_source_t* transition = transitions.sources.array[i]; - signal_handler_t* sh = obs_source_get_signal_handler(transition); - signal_handler_disconnect(sh, "transition_start", OnTransitionBegin, this); - signal_handler_connect(sh, "transition_start", OnTransitionBegin, this); - } - - obs_frontend_source_list_free(&transitions); -} - uint64_t WSEvents::GetStreamingTime() { if (obs_frontend_streaming_active()) return (os_gettime_ns() - _streamStarttime); @@ -761,8 +741,9 @@ void WSEvents::OnSourceCreate(void* param, calldata_t* data) { } obs_source_type sourceType = obs_source_get_type(source); + signal_handler_t* sh = obs_source_get_signal_handler(source); + if (sourceType == OBS_SOURCE_TYPE_SCENE) { - signal_handler_t* sh = obs_source_get_signal_handler(source); signal_handler_connect(sh, "reorder", OnSceneReordered, self); signal_handler_connect(sh, "item_add", OnSceneItemAdd, self); signal_handler_connect(sh, "item_remove", OnSceneItemDelete, self); @@ -770,6 +751,9 @@ void WSEvents::OnSourceCreate(void* param, calldata_t* data) { "item_visible", OnSceneItemVisibilityChanged, self); signal_handler_connect(sh, "item_transform", OnSceneItemTransform, self); } + if (sourceType == OBS_SOURCE_TYPE_TRANSITION) { + signal_handler_connect(sh, "transition_start", OnTransitionBegin, self); + } } /** diff --git a/src/WSEvents.h b/src/WSEvents.h index 7f6bdd4a..6f0b2ec1 100644 --- a/src/WSEvents.h +++ b/src/WSEvents.h @@ -44,8 +44,6 @@ public: static void FrontendEventHandler( enum obs_frontend_event event, void* privateData); - void hookTransitionBeginEvent(); - uint64_t GetStreamingTime(); const char* GetStreamingTimecode(); uint64_t GetRecordingTime();