From e7efd95050156c6cb6f4c0c756e5045e04e7b489 Mon Sep 17 00:00:00 2001 From: WarmUpTill <19472752+WarmUpTill@users.noreply.github.com> Date: Thu, 7 May 2026 22:13:40 +0200 Subject: [PATCH 1/2] Fix transition signals not being connected on scene selection change This would be the case if a new transition condition was created, which immediately is changed to "transitioning from ..." or "transitioning to ..." type. --- plugins/base/macro-condition-transition.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/base/macro-condition-transition.cpp b/plugins/base/macro-condition-transition.cpp index 69fd1813..c84dd305 100644 --- a/plugins/base/macro-condition-transition.cpp +++ b/plugins/base/macro-condition-transition.cpp @@ -357,6 +357,7 @@ void MacroConditionTransitionEdit::SceneChanged(const SceneSelection &s) { GUARD_LOADING_AND_LOCK(); _entryData->_scene = s; + _entryData->ConnectToTransitionSignals(); } void MacroConditionTransitionEdit::DurationChanged(const Duration &dur) From d2e7605e5cefc7ef5c86693b9e5ce48086f40354 Mon Sep 17 00:00:00 2001 From: WarmUpTill <19472752+WarmUpTill@users.noreply.github.com> Date: Fri, 8 May 2026 18:58:55 +0200 Subject: [PATCH 2/2] Fix "transitioning from" check not working in studio mode --- plugins/base/macro-condition-transition.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/plugins/base/macro-condition-transition.cpp b/plugins/base/macro-condition-transition.cpp index c84dd305..4da8f3f4 100644 --- a/plugins/base/macro-condition-transition.cpp +++ b/plugins/base/macro-condition-transition.cpp @@ -158,8 +158,21 @@ void MacroConditionTransition::TransitionStarted(void *data, calldata_t *cd) OBSSourceAutoRelease startSource = obs_transition_get_source( transitionSource, OBS_TRANSITION_SOURCE_A); + + // In studio mode, source A may be a private copy of the scene. + // Look up the original by name to get a comparable reference. + const bool studioModeActive = + obs_frontend_preview_program_mode_active(); + if (studioModeActive) { + OBSSourceAutoRelease startSourceByName = obs_get_source_by_name( + obs_source_get_name(startSource)); + if (startSourceByName) { + startSource = std::move(startSourceByName); + } + } + OBSSourceAutoRelease endSource = - obs_frontend_preview_program_mode_active() + studioModeActive ? obs_frontend_get_current_scene() : obs_transition_get_source(transitionSource, OBS_TRANSITION_SOURCE_B);