mirror of
https://github.com/WarmUpTill/SceneSwitcher.git
synced 2026-08-12 04:11:06 -05:00
Fix transition condition not considering transition overrides
This commit is contained in:
@@ -111,27 +111,42 @@ bool MacroConditionTransition::CheckCondition()
|
||||
return ret;
|
||||
}
|
||||
|
||||
void MacroConditionTransition::ConnectToTransitionSignals()
|
||||
void advss::MacroConditionTransition::AddTransitionSignals(
|
||||
obs_source_t *transition)
|
||||
{
|
||||
const bool useFrontendTransitionSelection =
|
||||
_transition.GetType() !=
|
||||
TransitionSelection::Type::TRANSITION ||
|
||||
(_condition == Condition::TRANSITION_SOURCE ||
|
||||
_condition == Condition::TRANSITION_TARGET);
|
||||
|
||||
_signals.clear();
|
||||
OBSSourceAutoRelease source =
|
||||
useFrontendTransitionSelection
|
||||
? obs_frontend_get_current_transition()
|
||||
: obs_weak_source_get_source(
|
||||
_transition.GetTransition());
|
||||
signal_handler_t *sh = obs_source_get_signal_handler(source);
|
||||
signal_handler_t *sh = obs_source_get_signal_handler(transition);
|
||||
_signals.emplace_back(sh, "transition_start", TransitionStarted, this);
|
||||
_signals.emplace_back(sh, "transition_stop", TransitionEnded, this);
|
||||
_signals.emplace_back(sh, "transition_video_stop", TransitionVideoEnded,
|
||||
this);
|
||||
}
|
||||
|
||||
void MacroConditionTransition::ConnectToTransitionSignals()
|
||||
{
|
||||
_signals.clear();
|
||||
|
||||
const bool watchSingleTransitionType =
|
||||
_transition.GetType() ==
|
||||
TransitionSelection::Type::TRANSITION &&
|
||||
!(_condition == Condition::TRANSITION_SOURCE ||
|
||||
_condition == Condition::TRANSITION_TARGET);
|
||||
|
||||
if (watchSingleTransitionType) {
|
||||
OBSSourceAutoRelease transition =
|
||||
OBSGetStrongRef(_transition.GetTransition());
|
||||
AddTransitionSignals(transition);
|
||||
return;
|
||||
}
|
||||
|
||||
obs_frontend_source_list transitions = {};
|
||||
obs_frontend_get_transitions(&transitions);
|
||||
for (size_t i = 0; i < transitions.sources.num; i++) {
|
||||
obs_source_t *transition = transitions.sources.array[i];
|
||||
AddTransitionSignals(transition);
|
||||
}
|
||||
obs_frontend_source_list_free(&transitions);
|
||||
}
|
||||
|
||||
void MacroConditionTransition::TransitionStarted(void *data, calldata_t *cd)
|
||||
{
|
||||
auto *condition = static_cast<MacroConditionTransition *>(data);
|
||||
|
||||
Reference in New Issue
Block a user