libobs, frontend: Signal transition_stop for cancelled transitions

This commit is contained in:
Warchamp7
2025-12-08 19:24:04 -05:00
committed by Ryan Foster
parent 2faf51a7ed
commit e6b52f2e9b
5 changed files with 33 additions and 6 deletions

View File

@@ -353,6 +353,11 @@ bool obs_transition_start(obs_source_t *transition, enum obs_transition_mode mod
transition->transition_manual_target = 0.0f;
unlock_transition(transition);
if (active) {
obs_transition_set(transition, transition->transition_sources[1]);
active = false;
}
if (transition->info.transition_start)
transition->info.transition_start(transition->context.data);
@@ -388,9 +393,16 @@ void obs_transition_set_manual_torque(obs_source_t *transition, float torque, fl
void obs_transition_set_manual_time(obs_source_t *transition, float t)
{
enum obs_transition_mode mode;
lock_transition(transition);
transition->transition_manual_target = t;
mode = transition->transition_mode;
unlock_transition(transition);
if (mode == OBS_TRANSITION_MODE_MANUAL && t == 0.0f) {
obs_transition_set(transition, transition->transition_sources[0]);
}
}
void obs_transition_set(obs_source_t *transition, obs_source_t *source)
@@ -403,6 +415,10 @@ void obs_transition_set(obs_source_t *transition, obs_source_t *source)
source = obs_source_get_ref(source);
if (transition_active(transition)) {
obs_source_dosignal(transition, "source_transition_stop", "transition_stop");
}
lock_transition(transition);
for (size_t i = 0; i < 2; i++) {
s[i] = transition->transition_sources[i];