From a9fc82365c1aa27f1cd8baa6bb0715f13adb6edf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20L?= Date: Sun, 24 Jun 2018 22:33:07 +0200 Subject: [PATCH] TransitionBegin: add source and destination scene names --- src/WSEvents.cpp | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/WSEvents.cpp b/src/WSEvents.cpp index 6890859f..52a6201f 100644 --- a/src/WSEvents.cpp +++ b/src/WSEvents.cpp @@ -741,6 +741,8 @@ void WSEvents::TransitionDurationChanged(int ms) { * * @return {String} `name` Transition name. * @return {int} `duration` Transition duration (in milliseconds). + * @return {String} `from-scene` Source scene of the transition + * @return {String} `to-scene` Destination scene of the transition * * @api events * @name TransitionBegin @@ -755,8 +757,9 @@ void WSEvents::OnTransitionBegin(void* param, calldata_t* data) { // Detect if transition is the global transition or a transition override. // Fetching the duration is different depending on the case. - OBSSourceAutoRelease destination = obs_transition_get_active_source(transition); - OBSDataAutoRelease destinationSettings = obs_source_get_private_settings(destination); + OBSSourceAutoRelease sourceScene = obs_transition_get_source(transition, OBS_TRANSITION_SOURCE_A); + OBSSourceAutoRelease destinationScene = obs_transition_get_active_source(transition); + OBSDataAutoRelease destinationSettings = obs_source_get_private_settings(destinationScene); int duration = -1; if (obs_data_has_default_value(destinationSettings, "transition_duration") || obs_data_has_user_value(destinationSettings, "transition_duration")) @@ -774,6 +777,13 @@ void WSEvents::OnTransitionBegin(void* param, calldata_t* data) { blog(LOG_WARNING, "OnTransitionBegin: duration is negative !"); } + if (sourceScene) { + obs_data_set_string(fields, "from-scene", obs_source_get_name(sourceScene)); + } + if (destinationScene) { + obs_data_set_string(fields, "to-scene", obs_source_get_name(destinationScene)); + } + instance->broadcastUpdate("TransitionBegin", fields); }