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(); --