evas_device: remove pointer data when device is removed. 79/246579/1
authorHosang Kim <hosang12.kim@samsung.com>
Mon, 2 Nov 2020 06:41:58 +0000 (15:41 +0900)
committerHosang Kim <hosang12.kim@samsung.com>
Mon, 2 Nov 2020 06:41:58 +0000 (15:41 +0900)
revert 9fbce472029e97ed4772f0a70dfd5a24c289ea5c
revert c7092190606f593cd64ca1cccbcb50d7cab3e859
revert d8d3f5ba181dfed758de96f005a471f1aea54631

Change-Id: I41e5430e55a4bdf274fbd58f847437be071bc0a5

src/lib/evas/canvas/evas_device.c
src/lib/evas/canvas/evas_main.c
src/lib/evas/include/evas_private.h

index c8cfbf3..c80dbfa 100644 (file)
@@ -113,9 +113,7 @@ _del_cb(void *data, const Efl_Event *ev)
      }
 
    if (devtype == EFL_INPUT_DEVICE_TYPE_MOUSE)
-     {
-        _evas_pointer_data_remove(e, ev->object, EINA_TRUE);
-     }
+     _evas_pointer_data_remove(e, ev->object);
    eina_hash_del_by_key(e->locks.masks, &ev->object);
    eina_hash_del_by_key(e->modifiers.masks, &ev->object);
    efl_event_callback_call(e->evas, EFL_CANVAS_SCENE_EVENT_DEVICE_REMOVED,
@@ -370,7 +368,7 @@ evas_device_class_set(Evas_Device *dev, Evas_Device_Class clas)
      return;
 
    if (_is_pointer((Evas_Device_Class)klass))
-     _evas_pointer_data_remove(edata, dev, EINA_FALSE);
+     _evas_pointer_data_remove(edata, dev);
 
    efl_input_device_type_set(dev, (Efl_Input_Device_Type)clas);
 
index 0b657f9..ae113c0 100644 (file)
@@ -1521,7 +1521,7 @@ _evas_pointer_data_add(Evas_Public_Data *edata, Evas_Device *pointer)
 }
 
 void
-_evas_pointer_data_remove(Evas_Public_Data *edata, Evas_Device *pointer, Eina_Bool nofree)
+_evas_pointer_data_remove(Evas_Public_Data *edata, Evas_Device *pointer)
 {
    Evas_Pointer_Data *pdata;
    Evas_Pointer_Seat *pseat;
@@ -1532,23 +1532,17 @@ _evas_pointer_data_remove(Evas_Public_Data *edata, Evas_Device *pointer, Eina_Bo
         EINA_INLIST_FOREACH(pseat->pointers, pdata)
           if (pdata->pointer == pointer)
             {
-               if (!nofree)
-                 {
-                    pseat->pointers = eina_inlist_remove(pseat->pointers, EINA_INLIST_GET(pdata));
-                    free(pdata);
-                 }
+               pseat->pointers = eina_inlist_remove(pseat->pointers, EINA_INLIST_GET(pdata));
+               free(pdata);
                hit = pseat;
                break;
             }
      }
    EINA_SAFETY_ON_NULL_RETURN(hit);
    if (hit->pointers) return;
-   hit->object.in = eina_list_free(hit->object.in);
-   if (!nofree)
-     {
-        edata->seats = eina_inlist_remove(edata->seats, EINA_INLIST_GET(hit));
-        free(hit);
-     }
+   eina_list_free(hit->object.in);
+   edata->seats = eina_inlist_remove(edata->seats, EINA_INLIST_GET(hit));
+   free(hit);
 }
 
 Eina_List *
index bda9b5e..ed4cbfa 100755 (executable)
@@ -1458,7 +1458,7 @@ void _evas_focus_dispatch_event(Evas_Object_Protected_Data *obj,
                                 Efl_Input_Device *seat, Eina_Bool in);
 Evas_Pointer_Data *_evas_pointer_data_by_device_get(Evas_Public_Data *edata, Efl_Input_Device *pointer);
 Evas_Pointer_Data *_evas_pointer_data_add(Evas_Public_Data *edata, Efl_Input_Device *pointer);
-void _evas_pointer_data_remove(Evas_Public_Data *edata, Efl_Input_Device *pointer, Eina_Bool nofree);
+void _evas_pointer_data_remove(Evas_Public_Data *edata, Efl_Input_Device *pointer);
 Eina_List *_evas_pointer_list_in_rect_get(Evas_Public_Data *edata,
                                          Evas_Object *obj,
                                          Evas_Object_Protected_Data *obj_data,