e client vol - fix del-self in a del while deleting self...

This commit is contained in:
Carsten Haitzler 2020-05-14 11:40:52 +01:00
parent 3524bc167c
commit e78c8b6b5f
2 changed files with 4 additions and 0 deletions

View File

@ -177,6 +177,8 @@ e_client_volume_sink_del(E_Client_Volume_Sink *sink)
{ {
E_Client *ec; E_Client *ec;
if (sink->in_del > 0) return;
sink->in_del++;
EINA_LIST_FREE(sink->clients, ec) EINA_LIST_FREE(sink->clients, ec)
{ {
ec->sinks = eina_list_remove(ec->sinks, sink); 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_EVENT_CLIENT_VOLUME_SINK_DEL);
e_object_unref(E_OBJECT(ec)); e_object_unref(E_OBJECT(ec));
} }
sink->in_del--;
free(sink); free(sink);
} }

View File

@ -26,6 +26,7 @@ struct _E_Client_Volume_Sink
E_Client_Volume_Sink_Name_Get func_name_get; E_Client_Volume_Sink_Name_Get func_name_get;
void *data; void *data;
Eina_List *clients; Eina_List *clients;
int in_del;
}; };
struct _E_Event_Client_Volume_Sink struct _E_Event_Client_Volume_Sink