From: Hosang Kim Date: Mon, 2 Nov 2020 06:41:58 +0000 (+0900) Subject: evas_device: remove pointer data when device is removed. X-Git-Tag: submit/tizen/20201108.215920~4 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F79%2F246579%2F1;p=platform%2Fupstream%2Fefl.git evas_device: remove pointer data when device is removed. revert 9fbce472029e97ed4772f0a70dfd5a24c289ea5c revert c7092190606f593cd64ca1cccbcb50d7cab3e859 revert d8d3f5ba181dfed758de96f005a471f1aea54631 Change-Id: I41e5430e55a4bdf274fbd58f847437be071bc0a5 --- diff --git a/src/lib/evas/canvas/evas_device.c b/src/lib/evas/canvas/evas_device.c index c8cfbf3..c80dbfa 100644 --- a/src/lib/evas/canvas/evas_device.c +++ b/src/lib/evas/canvas/evas_device.c @@ -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); diff --git a/src/lib/evas/canvas/evas_main.c b/src/lib/evas/canvas/evas_main.c index 0b657f9..ae113c0 100644 --- a/src/lib/evas/canvas/evas_main.c +++ b/src/lib/evas/canvas/evas_main.c @@ -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 * diff --git a/src/lib/evas/include/evas_private.h b/src/lib/evas/include/evas_private.h index bda9b5e..ed4cbfa 100755 --- a/src/lib/evas/include/evas_private.h +++ b/src/lib/evas/include/evas_private.h @@ -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,