PA_HASHMAP_FOREACH(sd, m->stream_duckings, state) {
PA_IDXSET_FOREACH(stream, sd->idx_ducking_streams, idx) {
- if (stream == i) {
- pa_log_info("remove stream(idx:%u,%p) from idx_ducking_streams, trigger_index(%u)",
- i->index, i, sd->trigger_index);
- pa_idxset_remove_by_data(sd->idx_ducking_streams, stream, NULL);
- return;
- }
+ if (stream != i)
+ continue;
+
+ if ((strlen(sd->target_role) && !sd->is_ducked) ||
+ (!strlen(sd->target_role) && sd->is_ducked))
+ pa_hook_fire(&i->core->hooks[PA_CORE_HOOK_SINK_INPUT_RAMP_FINISH], i);
+
+ pa_log_info("remove stream(idx:%u,%p) from idx_ducking_streams, trigger_index(%u)",
+ i->index, i, sd->trigger_index);
+ pa_idxset_remove_by_data(sd->idx_ducking_streams, stream, NULL);
+ return;
}
}
}