efm now attempts to unmount mounted volumes on suspend

SVN revision: 76952
This commit is contained in:
Mike Blumenkrantz 2012-09-21 09:33:22 +00:00
parent 4e779975f9
commit 5e9c699e97
1 changed files with 24 additions and 32 deletions

View File

@ -464,6 +464,7 @@ static void _e_fm2_volume_icon_update(E_Volume *v);
static void _e_fm2_operation_abort_internal(E_Fm2_Op_Registry_Entry *ere);
static Eina_Bool _e_fm2_sys_suspend_hibernate(void *, int, void *);
static void _e_fm2_favorites_thread_cb(void *d, Ecore_Thread *et);
static void _e_fm2_thread_cleanup_cb(void *d, Ecore_Thread *et);
@ -486,6 +487,8 @@ static const char *_e_fm2_mime_app_edje = NULL;
static const char *_e_fm2_mime_text_uri_list = NULL;
static const char *_e_fm2_xds = NULL;
static Eina_List *_e_fm_handlers = NULL;
static const char **_e_fm2_dnd_types[] =
{
&_e_fm2_mime_text_uri_list,
@ -738,9 +741,6 @@ _e_fm2_op_registry_entry_changed_cb(void *data __UNUSED__, int type __UNUSED__,
return ECORE_CALLBACK_RENEW;
}
static Ecore_Event_Handler *_e_fm2_op_registry_entry_add_handler = NULL;
static Ecore_Event_Handler *_e_fm2_op_registry_entry_del_handler = NULL;
static Ecore_Event_Handler *_e_fm2_op_registry_entry_changed_handler = NULL;
/////////////// DBG:
/***/
@ -803,19 +803,12 @@ e_fm2_init(void)
_e_fm2_thread_cleanup_cb, NULL);
/// DBG
if (!_e_fm2_op_registry_entry_add_handler)
_e_fm2_op_registry_entry_add_handler =
ecore_event_handler_add(E_EVENT_FM_OP_REGISTRY_ADD,
_e_fm2_op_registry_entry_add_cb, NULL);
if (!_e_fm2_op_registry_entry_del_handler)
_e_fm2_op_registry_entry_del_handler =
ecore_event_handler_add(E_EVENT_FM_OP_REGISTRY_DEL,
_e_fm2_op_registry_entry_del_cb, NULL);
if (!_e_fm2_op_registry_entry_changed_handler)
_e_fm2_op_registry_entry_changed_handler =
ecore_event_handler_add(E_EVENT_FM_OP_REGISTRY_CHANGED,
_e_fm2_op_registry_entry_changed_cb, NULL);
E_LIST_HANDLER_APPEND(_e_fm_handlers, E_EVENT_FM_OP_REGISTRY_ADD, _e_fm2_op_registry_entry_add_cb, NULL);
E_LIST_HANDLER_APPEND(_e_fm_handlers, E_EVENT_FM_OP_REGISTRY_DEL, _e_fm2_op_registry_entry_del_cb, NULL);
E_LIST_HANDLER_APPEND(_e_fm_handlers, E_EVENT_FM_OP_REGISTRY_CHANGED, _e_fm2_op_registry_entry_changed_cb, NULL);
/// DBG
E_LIST_HANDLER_APPEND(_e_fm_handlers, E_EVENT_SYS_HIBERNATE, _e_fm2_sys_suspend_hibernate, NULL);
E_LIST_HANDLER_APPEND(_e_fm_handlers, E_EVENT_SYS_RESUME, _e_fm2_sys_suspend_hibernate, NULL);
return 1;
}
@ -831,23 +824,7 @@ e_fm2_shutdown(void)
eina_stringshare_replace(&_e_fm2_mime_text_uri_list, NULL);
eina_stringshare_replace(&_e_fm2_xds, NULL);
/// DBG
if (_e_fm2_op_registry_entry_add_handler)
{
ecore_event_handler_del(_e_fm2_op_registry_entry_add_handler);
_e_fm2_op_registry_entry_add_handler = NULL;
}
if (_e_fm2_op_registry_entry_del_handler)
{
ecore_event_handler_del(_e_fm2_op_registry_entry_del_handler);
_e_fm2_op_registry_entry_del_handler = NULL;
}
if (_e_fm2_op_registry_entry_changed_handler)
{
ecore_event_handler_del(_e_fm2_op_registry_entry_changed_handler);
_e_fm2_op_registry_entry_changed_handler = NULL;
}
/// DBG
E_FREE_LIST(_e_fm_handlers, ecore_event_handler_del);
ecore_timer_del(_e_fm2_mime_flush);
_e_fm2_mime_flush = NULL;
@ -10581,6 +10558,21 @@ _e_fm2_file_delete_no_cb(void *data, E_Dialog *dialog)
e_object_del(E_OBJECT(dialog));
}
static Eina_Bool
_e_fm2_sys_suspend_hibernate(void *d __UNUSED__, int type __UNUSED__, void *ev __UNUSED__)
{
Eina_List *l, *ll, *lll;
E_Volume *v;
E_Fm2_Mount *m;
EINA_LIST_FOREACH(e_fm2_device_volume_list_get(), l, v)
{
EINA_LIST_FOREACH_SAFE(v->mounts, ll, lll, m)
e_fm2_device_unmount(m);
}
return ECORE_CALLBACK_RENEW;
}
static void
_e_fm2_refresh_job_cb(void *data)
{