cedric pushed a commit to branch master.

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

commit ff3c6f394eb5a944da75a5cc001a664fc4dfee69
Author: Cedric BAIL <ced...@osg.samsung.com>
Date:   Thu Mar 9 16:15:54 2017 -0800

    eeze: avoid crash during shutdown due to Ecore_Event queue.
---
 src/lib/eeze/eeze_disk_mount.c |   4 ++
 src/lib/eeze/eeze_sensor.c     | 105 +++++++++++++++++------------------------
 2 files changed, 48 insertions(+), 61 deletions(-)

diff --git a/src/lib/eeze/eeze_disk_mount.c b/src/lib/eeze/eeze_disk_mount.c
index ed151d0..56b8fa9 100644
--- a/src/lib/eeze/eeze_disk_mount.c
+++ b/src/lib/eeze/eeze_disk_mount.c
@@ -186,6 +186,10 @@ eeze_mount_init(void)
 void
 eeze_mount_shutdown(void)
 {
+   ecore_event_type_flush(EEZE_EVENT_DISK_MOUNT,
+                          EEZE_EVENT_DISK_UNMOUNT,
+                          EEZE_EVENT_DISK_EJECT,
+                          EEZE_EVENT_DISK_ERROR);
    eeze_libmount_shutdown();
    ecore_event_handler_del(_mount_handler);
    _mount_handler = NULL;
diff --git a/src/lib/eeze/eeze_sensor.c b/src/lib/eeze/eeze_sensor.c
index 284f788..17027a7 100644
--- a/src/lib/eeze/eeze_sensor.c
+++ b/src/lib/eeze/eeze_sensor.c
@@ -335,6 +335,27 @@ eeze_sensor_async_read(Eeze_Sensor_Obj *sens, void 
*user_data)
 void
 eeze_sensor_shutdown(void)
 {
+   ecore_event_type_flush(EEZE_SENSOR_EVENT_ACCELEROMETER,
+                          EEZE_SENSOR_EVENT_GRAVITY,
+                          EEZE_SENSOR_EVENT_LINEAR_ACCELERATION,
+                          EEZE_SENSOR_EVENT_DEVICE_ORIENTATION,
+                          EEZE_SENSOR_EVENT_MAGNETIC,
+                          EEZE_SENSOR_EVENT_ORIENTATION,
+                          EEZE_SENSOR_EVENT_GYROSCOPE,
+                          EEZE_SENSOR_EVENT_LIGHT,
+                          EEZE_SENSOR_EVENT_PROXIMITY,
+                          EEZE_SENSOR_EVENT_SNAP,
+                          EEZE_SENSOR_EVENT_SHAKE,
+                          EEZE_SENSOR_EVENT_DOUBLETAP,
+                          EEZE_SENSOR_EVENT_PANNING,
+                          EEZE_SENSOR_EVENT_PANNING_BROWSE,
+                          EEZE_SENSOR_EVENT_TILT,
+                          EEZE_SENSOR_EVENT_FACEDOWN,
+                          EEZE_SENSOR_EVENT_DIRECT_CALL,
+                          EEZE_SENSOR_EVENT_SMART_ALERT,
+                          EEZE_SENSOR_EVENT_NO_MOVE,
+                          EEZE_SENSOR_EVENT_BAROMETER,
+                          EEZE_SENSOR_EVENT_TEMPERATURE);
    eeze_sensor_modules_unload();
    eina_hash_free(g_handle->modules);
    g_handle->modules = NULL;
@@ -365,67 +386,29 @@ eeze_sensor_init(void)
 
    /* Make sure we create new ecore event types before using them */
    if (EEZE_SENSOR_EVENT_ACCELEROMETER == 0)
-      EEZE_SENSOR_EVENT_ACCELEROMETER = ecore_event_type_new();
-
-   if (EEZE_SENSOR_EVENT_GRAVITY == 0)
-      EEZE_SENSOR_EVENT_GRAVITY = ecore_event_type_new();
-
-   if (EEZE_SENSOR_EVENT_LINEAR_ACCELERATION == 0)
-      EEZE_SENSOR_EVENT_LINEAR_ACCELERATION = ecore_event_type_new();
-
-   if (EEZE_SENSOR_EVENT_DEVICE_ORIENTATION == 0)
-      EEZE_SENSOR_EVENT_DEVICE_ORIENTATION = ecore_event_type_new();
-
-   if (EEZE_SENSOR_EVENT_MAGNETIC == 0)
-      EEZE_SENSOR_EVENT_MAGNETIC = ecore_event_type_new();
-
-   if (EEZE_SENSOR_EVENT_ORIENTATION == 0)
-      EEZE_SENSOR_EVENT_ORIENTATION = ecore_event_type_new();
-
-   if (EEZE_SENSOR_EVENT_GYROSCOPE == 0)
-      EEZE_SENSOR_EVENT_GYROSCOPE = ecore_event_type_new();
-
-   if (EEZE_SENSOR_EVENT_LIGHT == 0)
-      EEZE_SENSOR_EVENT_LIGHT = ecore_event_type_new();
-
-   if (EEZE_SENSOR_EVENT_PROXIMITY == 0)
-      EEZE_SENSOR_EVENT_PROXIMITY = ecore_event_type_new();
-
-   if (EEZE_SENSOR_EVENT_SNAP == 0)
-      EEZE_SENSOR_EVENT_SNAP = ecore_event_type_new();
-
-   if (EEZE_SENSOR_EVENT_SHAKE == 0)
-      EEZE_SENSOR_EVENT_SHAKE = ecore_event_type_new();
-
-   if (EEZE_SENSOR_EVENT_DOUBLETAP == 0)
-      EEZE_SENSOR_EVENT_DOUBLETAP = ecore_event_type_new();
-
-   if (EEZE_SENSOR_EVENT_PANNING == 0)
-      EEZE_SENSOR_EVENT_PANNING = ecore_event_type_new();
-
-   if (EEZE_SENSOR_EVENT_PANNING_BROWSE == 0)
-      EEZE_SENSOR_EVENT_PANNING_BROWSE = ecore_event_type_new();
-
-   if (EEZE_SENSOR_EVENT_TILT == 0)
-      EEZE_SENSOR_EVENT_TILT = ecore_event_type_new();
-
-   if (EEZE_SENSOR_EVENT_FACEDOWN == 0)
-      EEZE_SENSOR_EVENT_FACEDOWN = ecore_event_type_new();
-
-   if (EEZE_SENSOR_EVENT_DIRECT_CALL == 0)
-      EEZE_SENSOR_EVENT_DIRECT_CALL = ecore_event_type_new();
-
-   if (EEZE_SENSOR_EVENT_SMART_ALERT == 0)
-      EEZE_SENSOR_EVENT_SMART_ALERT = ecore_event_type_new();
-
-   if (EEZE_SENSOR_EVENT_NO_MOVE == 0)
-      EEZE_SENSOR_EVENT_NO_MOVE = ecore_event_type_new();
-
-   if (EEZE_SENSOR_EVENT_BAROMETER == 0)
-      EEZE_SENSOR_EVENT_BAROMETER = ecore_event_type_new();
-
-   if (EEZE_SENSOR_EVENT_TEMPERATURE == 0)
-      EEZE_SENSOR_EVENT_TEMPERATURE = ecore_event_type_new();
+     {
+        EEZE_SENSOR_EVENT_ACCELEROMETER = ecore_event_type_new();
+        EEZE_SENSOR_EVENT_GRAVITY = ecore_event_type_new();
+        EEZE_SENSOR_EVENT_LINEAR_ACCELERATION = ecore_event_type_new();
+        EEZE_SENSOR_EVENT_DEVICE_ORIENTATION = ecore_event_type_new();
+        EEZE_SENSOR_EVENT_MAGNETIC = ecore_event_type_new();
+        EEZE_SENSOR_EVENT_ORIENTATION = ecore_event_type_new();
+        EEZE_SENSOR_EVENT_GYROSCOPE = ecore_event_type_new();
+        EEZE_SENSOR_EVENT_LIGHT = ecore_event_type_new();
+        EEZE_SENSOR_EVENT_PROXIMITY = ecore_event_type_new();
+        EEZE_SENSOR_EVENT_SNAP = ecore_event_type_new();
+        EEZE_SENSOR_EVENT_SHAKE = ecore_event_type_new();
+        EEZE_SENSOR_EVENT_DOUBLETAP = ecore_event_type_new();
+        EEZE_SENSOR_EVENT_PANNING = ecore_event_type_new();
+        EEZE_SENSOR_EVENT_PANNING_BROWSE = ecore_event_type_new();
+        EEZE_SENSOR_EVENT_TILT = ecore_event_type_new();
+        EEZE_SENSOR_EVENT_FACEDOWN = ecore_event_type_new();
+        EEZE_SENSOR_EVENT_DIRECT_CALL = ecore_event_type_new();
+        EEZE_SENSOR_EVENT_SMART_ALERT = ecore_event_type_new();
+        EEZE_SENSOR_EVENT_NO_MOVE = ecore_event_type_new();
+        EEZE_SENSOR_EVENT_BAROMETER = ecore_event_type_new();
+        EEZE_SENSOR_EVENT_TEMPERATURE = ecore_event_type_new();
+     }
 
    /* Core is ready so we can load the modules from disk now */
    eeze_sensor_modules_load();

-- 


Reply via email to