diff --git a/src/bin/e_client.c b/src/bin/e_client.c index e6ff7aca3..035c66f96 100644 --- a/src/bin/e_client.c +++ b/src/bin/e_client.c @@ -585,6 +585,8 @@ _e_client_del(E_Client *ec) E_Client *child; E_Client_Volume_Sink *sink; + EINA_LIST_FREE(ec->sinks, sink) + e_client_volume_sink_remove(ec, sink); for (child = ec->stack.next; child; child = child->stack.next) e_client_act_close_begin(child); ec->changed = 0; @@ -673,9 +675,6 @@ _e_client_del(E_Client *ec) e_comp->clients = eina_list_remove(e_comp->clients, ec); e_comp_object_render_update_del(ec->frame); - - EINA_LIST_FREE(ec->sinks, sink) - sink->clients = eina_list_remove(sink->clients, ec); } /////////////////////////////////////////// diff --git a/src/modules/mixer/e_mod_main.c b/src/modules/mixer/e_mod_main.c index fe733371a..f973637f6 100644 --- a/src/modules/mixer/e_mod_main.c +++ b/src/modules/mixer/e_mod_main.c @@ -792,6 +792,12 @@ _sink_event(int type, void *info) static void _disconnected(void) { + E_Client_Volume_Sink *sink; + + EINA_LIST_FREE(_client_sinks, sink) + { + e_client_volume_sink_del(sink); + } if (mixer_context) mixer_context->sink_default = NULL; _mixer_gadget_update(); } diff --git a/src/modules/mixer/gadget/mixer.c b/src/modules/mixer/gadget/mixer.c index 04a8c5304..22d5f322d 100644 --- a/src/modules/mixer/gadget/mixer.c +++ b/src/modules/mixer/gadget/mixer.c @@ -712,6 +712,12 @@ _sink_event(int type, void *info) static void _disconnected(void) { + E_Client_Volume_Sink *sink; + + EINA_LIST_FREE(_client_sinks, sink) + { + e_client_volume_sink_del(sink); + } if (gmixer_context) gmixer_context->sink_default = NULL; _mixer_gadget_update(); }