raster pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=4c52048f0990e6a89967ed0bb67884fc46074dcd

commit 4c52048f0990e6a89967ed0bb67884fc46074dcd
Author: Carsten Haitzler (Rasterman) <[email protected]>
Date:   Thu May 14 12:02:42 2020 +0100

    undo the client volume fix as it causes memory access issues.
    
    reopen D8928
    
    it looked good until i started having some apps start/stop audio a lot
    with asan on - it was catching memory mis-accesses. definitely not ok
    to have this in
    
    Revert "e client vol - fix del-self in a del while deleting self..."
    This reverts commit e78c8b6b5f2b36434ea34dd5e32d1ab89f4a18b2.
    Revert "e_client_volume: Update the e_client frame object on sink del event"
    This reverts commit f4c1ba959e908dde14023aba7c7e55ce3b963d6e.
---
 src/bin/e_client_volume.c | 8 ++------
 src/bin/e_client_volume.h | 1 -
 2 files changed, 2 insertions(+), 7 deletions(-)

diff --git a/src/bin/e_client_volume.c b/src/bin/e_client_volume.c
index 96e9ab406..d1a4eaa6e 100644
--- a/src/bin/e_client_volume.c
+++ b/src/bin/e_client_volume.c
@@ -14,7 +14,6 @@ static void _e_client_volume_object_volume_changed(void 
*data, Evas_Object *obj,
 static void _e_client_volume_object_volume_drag_stop(void *data, Evas_Object 
*obj, void *event_info);
 static Eina_Bool _e_client_volume_object_changed(void *data, int type, void 
*event);
 static void _e_client_volume_object_del_cb(void *data, Evas *evas, Evas_Object 
*obj, void *event_info);
-static void _e_client_volume_update(E_Client *ec);
 
 static void
 _e_client_volume_event_simple_free(void *d EINA_UNUSED, E_Event_Client *ev)
@@ -177,17 +176,14 @@ 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);
-        _e_client_volume_update(ec);
+        e_comp_object_frame_volume_update(ec->frame);
         _e_client_volume_sink_event_simple(ec, sink,
                                            E_EVENT_CLIENT_VOLUME_SINK_DEL);
         e_object_unref(E_OBJECT(ec));
      }
-   sink->in_del--;
    free(sink);
 }
 
@@ -289,9 +285,9 @@ _e_client_volume_update(E_Client *ec)
         ec->mute = EINA_FALSE;
         ec->volume_control_enabled = EINA_FALSE;
      }
-   e_comp_object_frame_volume_update(ec->frame);
    if (ec->volume_control_enabled)
      {
+        e_comp_object_frame_volume_update(ec->frame);
         e_client_volume_display_set(ec, ec->volume, ec->mute);
      }
 }
diff --git a/src/bin/e_client_volume.h b/src/bin/e_client_volume.h
index 8d9f44db7..12ae83628 100644
--- a/src/bin/e_client_volume.h
+++ b/src/bin/e_client_volume.h
@@ -26,7 +26,6 @@ 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

-- 


Reply via email to