diff --git a/src/bin/e_client_volume.c b/src/bin/e_client_volume.c index 4c52d5646..96e9ab406 100644 --- a/src/bin/e_client_volume.c +++ b/src/bin/e_client_volume.c @@ -177,6 +177,8 @@ e_client_volume_sink_del(E_Client_Volume_Sink *sink) { E_Client *ec; + if (sink->in_del > 0) return; + sink->in_del++; EINA_LIST_FREE(sink->clients, ec) { ec->sinks = eina_list_remove(ec->sinks, sink); @@ -185,6 +187,7 @@ e_client_volume_sink_del(E_Client_Volume_Sink *sink) E_EVENT_CLIENT_VOLUME_SINK_DEL); e_object_unref(E_OBJECT(ec)); } + sink->in_del--; free(sink); } diff --git a/src/bin/e_client_volume.h b/src/bin/e_client_volume.h index 12ae83628..8d9f44db7 100644 --- a/src/bin/e_client_volume.h +++ b/src/bin/e_client_volume.h @@ -26,6 +26,7 @@ struct _E_Client_Volume_Sink E_Client_Volume_Sink_Name_Get func_name_get; void *data; Eina_List *clients; + int in_del; }; struct _E_Event_Client_Volume_Sink