events: refactor signal connection to transitions

This commit is contained in:
Stéphane Lepin
2019-04-18 13:51:17 +02:00
committed by Stéphane L
parent 21940c922d
commit 88d3271c40
2 changed files with 5 additions and 23 deletions

View File

@ -94,10 +94,6 @@ WSEvents::WSEvents(WSServerPtr srv) :
heartbeatTimer.start(STATUS_INTERVAL); heartbeatTimer.start(STATUS_INTERVAL);
QTimer::singleShot(1000, this, [=]() {
hookTransitionBeginEvent();
});
signal_handler_t* coreSignalHandler = obs_get_signal_handler(); signal_handler_t* coreSignalHandler = obs_get_signal_handler();
if (coreSignalHandler) { if (coreSignalHandler) {
signal_handler_connect(coreSignalHandler, "source_create", OnSourceCreate, this); signal_handler_connect(coreSignalHandler, "source_create", OnSourceCreate, this);
@ -122,7 +118,6 @@ void WSEvents::FrontendEventHandler(enum obs_frontend_event event, void* private
owner->OnSceneListChange(); owner->OnSceneListChange();
} }
else if (event == OBS_FRONTEND_EVENT_SCENE_COLLECTION_CHANGED) { else if (event == OBS_FRONTEND_EVENT_SCENE_COLLECTION_CHANGED) {
owner->hookTransitionBeginEvent();
owner->OnSceneCollectionChange(); owner->OnSceneCollectionChange();
} }
else if (event == OBS_FRONTEND_EVENT_SCENE_COLLECTION_LIST_CHANGED) { 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(); owner->OnTransitionChange();
} }
else if (event == OBS_FRONTEND_EVENT_TRANSITION_LIST_CHANGED) { else if (event == OBS_FRONTEND_EVENT_TRANSITION_LIST_CHANGED) {
owner->hookTransitionBeginEvent();
owner->OnTransitionListChange(); owner->OnTransitionListChange();
} }
else if (event == OBS_FRONTEND_EVENT_PROFILE_CHANGED) { 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() { uint64_t WSEvents::GetStreamingTime() {
if (obs_frontend_streaming_active()) if (obs_frontend_streaming_active())
return (os_gettime_ns() - _streamStarttime); 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); 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) { 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, "reorder", OnSceneReordered, self);
signal_handler_connect(sh, "item_add", OnSceneItemAdd, self); signal_handler_connect(sh, "item_add", OnSceneItemAdd, self);
signal_handler_connect(sh, "item_remove", OnSceneItemDelete, 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); "item_visible", OnSceneItemVisibilityChanged, self);
signal_handler_connect(sh, "item_transform", OnSceneItemTransform, self); signal_handler_connect(sh, "item_transform", OnSceneItemTransform, self);
} }
if (sourceType == OBS_SOURCE_TYPE_TRANSITION) {
signal_handler_connect(sh, "transition_start", OnTransitionBegin, self);
}
} }
/** /**

View File

@ -44,8 +44,6 @@ public:
static void FrontendEventHandler( static void FrontendEventHandler(
enum obs_frontend_event event, void* privateData); enum obs_frontend_event event, void* privateData);
void hookTransitionBeginEvent();
uint64_t GetStreamingTime(); uint64_t GetStreamingTime();
const char* GetStreamingTimecode(); const char* GetStreamingTimecode();
uint64_t GetRecordingTime(); uint64_t GetRecordingTime();