diff --git a/plugins/obs-transitions/transition-stinger.c b/plugins/obs-transitions/transition-stinger.c index 38ad40a8dc3a43..12e1696e8d5c26 100644 --- a/plugins/obs-transitions/transition-stinger.c +++ b/plugins/obs-transitions/transition-stinger.c @@ -79,6 +79,8 @@ static void stinger_update(void *data, obs_data_t *settings) obs_data_set_bool(media_settings, "is_stinger", true); obs_data_set_bool(media_settings, "is_track_matte", s->track_matte_enabled); + if (s->media_source && s->transitioning) + obs_source_remove_active_child(s->source, s->media_source); obs_source_release(s->media_source); struct dstr name; dstr_init_copy(&name, obs_source_get_name(s->source)); @@ -87,6 +89,8 @@ static void stinger_update(void *data, obs_data_t *settings) dstr_free(&name); obs_data_release(media_settings); + if (s->media_source && s->transitioning) + obs_source_add_active_child(s->source, s->media_source); int64_t point = obs_data_get_int(settings, "transition_point"); s->transition_point_is_frame = obs_data_get_int(settings, "tp_type") == TIMING_FRAME; @@ -476,7 +480,7 @@ static bool stinger_audio_render(void *data, uint64_t *ts_out, struct obs_source return false; } - if (!obs_source_audio_pending(s->media_source)) { + if (s->media_source && !obs_source_audio_pending(s->media_source)) { ts = obs_source_get_audio_timestamp(s->media_source); if (!ts) return false;