From a0611d002697e6a33d5ef2866b94ad5526176187 Mon Sep 17 00:00:00 2001 From: "Carsten Haitzler (Rasterman)" Date: Wed, 16 Jan 2019 16:48:28 +0000 Subject: [PATCH] mixer - mirror changes to new gadget code too --- src/modules/mixer/gadget/mixer.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/modules/mixer/gadget/mixer.c b/src/modules/mixer/gadget/mixer.c index c1f1146e8..41c3f24a3 100644 --- a/src/modules/mixer/gadget/mixer.c +++ b/src/modules/mixer/gadget/mixer.c @@ -860,16 +860,17 @@ _get_ppid(pid_t pid) static void _sink_input_event(int type, Emix_Sink_Input *input) { - Eina_List *clients, *l; + Eina_List *clients, *l, *ll; E_Client *ec; E_Client_Volume_Sink *sink; pid_t pid; + Eina_Bool found = EINA_FALSE; switch (type) { case EMIX_SINK_INPUT_ADDED_EVENT: pid = input->pid; - while (42) + for (;;) { if (pid <= 1 || pid == getpid()) return; clients = e_client_focus_stack_get(); @@ -887,21 +888,21 @@ _sink_input_event(int type, Emix_Sink_Input *input) input); e_client_volume_sink_append(ec, sink); _client_sinks = eina_list_append(_client_sinks, sink); - return; + found = EINA_TRUE; } } + if (found) break; pid = _get_ppid(pid); } break; case EMIX_SINK_INPUT_REMOVED_EVENT: - EINA_LIST_FOREACH(_client_sinks, l, sink) + EINA_LIST_FOREACH_SAFE(_client_sinks, l, ll, sink) { if (sink->data == input) { e_client_volume_sink_del(sink); _client_sinks = eina_list_remove_list(_client_sinks, l); - break; } } break;