From e78c8b6b5f2b36434ea34dd5e32d1ab89f4a18b2 Mon Sep 17 00:00:00 2001 From: "Carsten Haitzler (Rasterman)" Date: Thu, 14 May 2020 11:40:52 +0100 Subject: [PATCH] e client vol - fix del-self in a del while deleting self... --- src/bin/e_client_volume.c | 3 +++ src/bin/e_client_volume.h | 1 + 2 files changed, 4 insertions(+) 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