e mixer - handle pulse exit/disconnect and not keep e client sinks

we keps e client sinks even if we were dicsonnected from pulse... this
caused fun crashes. fix

@fix
This commit is contained in:
Carsten Haitzler 2017-08-19 13:26:11 +09:00
parent d196f25a2b
commit da791a0bf5
3 changed files with 14 additions and 3 deletions

View File

@ -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);
}
///////////////////////////////////////////

View File

@ -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();
}

View File

@ -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();
}