evas: do not link the life cycle of the device with the parent.
authorCedric Bail <cedric@osg.samsung.com>
Fri, 6 Apr 2018 21:53:44 +0000 (14:53 -0700)
committerWonki Kim <wonki_.kim@samsung.com>
Thu, 31 May 2018 07:00:49 +0000 (16:00 +0900)
src/lib/evas/canvas/evas_device.c

index 5bd44b2..58a9be7 100644 (file)
@@ -184,11 +184,11 @@ evas_device_add_full(Evas *eo_e, const char *name, const char *desc,
 
    SAFETY_CHECK(eo_e, EVAS_CANVAS_CLASS, NULL);
 
-   dev = efl_add(EFL_INPUT_DEVICE_CLASS, parent_dev ?: eo_e,
-                 efl_name_set(efl_added, name),
-                 efl_comment_set(efl_added, desc),
-                 efl_input_device_type_set(efl_added, clas),
-                 efl_input_device_source_set(efl_added, emulation_dev));
+   dev = efl_add_ref(EFL_INPUT_DEVICE_CLASS, parent_dev ?: eo_e,
+                     efl_name_set(efl_added, name),
+                     efl_comment_set(efl_added, desc),
+                     efl_input_device_type_set(efl_added, clas),
+                     efl_input_device_source_set(efl_added, emulation_dev));
 
    d = efl_data_scope_get(dev, EFL_INPUT_DEVICE_CLASS);
    d->evas = eo_e;
@@ -264,8 +264,9 @@ EAPI void
 evas_device_del(Evas_Device *dev)
 {
    SAFETY_CHECK(dev, EFL_INPUT_DEVICE_CLASS);
-
-   efl_del(dev);
+   if (!efl_invalidated_get(dev))
+     efl_del(dev);
+   efl_unref(dev);
 }
 
 EAPI void