bdilly pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=e0af7384a2edf4d6ebb33bec88dc72c672b84150

commit e0af7384a2edf4d6ebb33bec88dc72c672b84150
Author: Guilherme Iscaro <[email protected]>
Date:   Thu Dec 1 16:14:11 2016 -0200

    Efl.Input.Device: Do not ref/unref devices children devices.
    
    When a mouse/keyboard is removed from its seat under the Wayland backend,
    it was not immediately deleted from EFL, because its parent was keeping
    a reference to it. Since the mouse/keyboard is no longer present in the 
system
    there's no reason the keep them around. To prevent this delayed deletion do
    not ref/unref them when the parent is set.
---
 src/lib/efl/interfaces/efl_input_device.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/src/lib/efl/interfaces/efl_input_device.c 
b/src/lib/efl/interfaces/efl_input_device.c
index bb59fc6..f20063f 100644
--- a/src/lib/efl/interfaces/efl_input_device.c
+++ b/src/lib/efl/interfaces/efl_input_device.c
@@ -28,7 +28,11 @@ _efl_input_device_efl_object_destructor(Eo *obj, 
Efl_Input_Device_Data *pd)
      {
         Efl_Input_Device_Data *child = efl_data_scope_get(eo_child, 
EFL_INPUT_DEVICE_CLASS);
         child->parent = NULL;
-        efl_unref(eo_child);
+     }
+   if (pd->parent)
+     {
+        Efl_Input_Device_Data *p = efl_data_scope_get(pd->parent, 
EFL_INPUT_DEVICE_CLASS);
+        p->children = eina_list_remove(p->children, obj);
      }
    efl_unref(pd->source);
 
@@ -128,14 +132,12 @@ _efl_input_device_parent_set(Eo *obj, 
Efl_Input_Device_Data *pd, Efl_Input_Devic
      {
         Efl_Input_Device_Data *p = efl_data_scope_get(pd->parent, 
EFL_INPUT_DEVICE_CLASS);
         p->children = eina_list_remove(p->children, obj);
-        efl_unref(obj);
      }
    pd->parent = parent;
    if (parent)
      {
         Efl_Input_Device_Data *p = efl_data_scope_get(parent, 
EFL_INPUT_DEVICE_CLASS);
         p->children = eina_list_append(p->children, obj);
-        efl_ref(obj);
      }
 }
 

-- 


Reply via email to