evas: Disable calls to evas_device_class_set
authorJean-Philippe Andre <jp.andre@samsung.com>
Thu, 15 Jun 2017 00:56:59 +0000 (09:56 +0900)
committerJean-Philippe Andre <jp.andre@samsung.com>
Thu, 15 Jun 2017 00:58:40 +0000 (09:58 +0900)
After finalize, the type of an input device can not be changed.
So, deprecate the function and prevent anything from happening
unless we're inside efl_add().

Ref T5515

src/lib/evas/Evas_Common.h
src/lib/evas/canvas/evas_device.c

index 789e3f3..80e3658 100644 (file)
@@ -1153,9 +1153,11 @@ EAPI const Evas_Device *evas_device_parent_get(const Evas_Device *dev);
  * This sets the "primary" class of device (a broad thing like mouse, keyboard,
  * touch, pen etc.).
  *
+ * @deprecated The class of a device can not be changed after creation.
+ *
  * @since 1.8
  */
-EAPI void evas_device_class_set(Evas_Device *dev, Evas_Device_Class clas);
+EAPI void evas_device_class_set(Evas_Device *dev, Evas_Device_Class clas) EINA_DEPRECATED;
 
 /**
  * Get the major class of a device
index 783497a..87f4f47 100644 (file)
@@ -350,6 +350,7 @@ EAPI void
 evas_device_class_set(Evas_Device *dev, Evas_Device_Class clas)
 {
    SAFETY_CHECK(dev, EFL_INPUT_DEVICE_CLASS);
+   EINA_SAFETY_ON_TRUE_RETURN(efl_finalized_get(dev));
 
    Efl_Input_Device_Data *d = efl_data_scope_get(dev, EFL_INPUT_DEVICE_CLASS);
    Evas_Public_Data *edata = efl_data_scope_get(d->evas, EVAS_CANVAS_CLASS);