diff --git a/src/actions.c b/src/actions.c index 683baeaea..0c549c4d1 100644 --- a/src/actions.c +++ b/src/actions.c @@ -1555,7 +1555,7 @@ e_act_exit_start (E_Object *object, E_Action *a, void *data, int x, int y, int r ecore_sync(); e_db_flush(); - + exit(0); D_RETURN; diff --git a/src/fs.c b/src/fs.c index c5c8ac168..ea0901918 100644 --- a/src/fs.c +++ b/src/fs.c @@ -220,6 +220,18 @@ e_fs_init(void) D_RETURN; } +void +e_fs_cleanup(void) +{ + D_ENTER; + + efsd_close(ec); + D("Connection to Efsd closed.\n"); + + D_RETURN; +} + + EfsdConnection * e_fs_get_connection(void) { diff --git a/src/fs.h b/src/fs.h index d56f94a8e..56d7e3854 100644 --- a/src/fs.h +++ b/src/fs.h @@ -20,6 +20,14 @@ struct _E_FS_Restarter */ void e_fs_init(void); +/** + * e_fs_cleanup - Filesystem code cleanup routine. + * + * This function takes care of properly saying + * good bye to Efsd. + */ +void e_fs_cleanup(void); + E_FS_Restarter *e_fs_add_restart_handler(void (*func) (void *data), void *data); void e_fs_del_restart_handler(E_FS_Restarter *rs); void e_fs_add_event_handler(void (*func) (EfsdEvent *ev)); diff --git a/src/main.c b/src/main.c index 55898d84d..31df98caa 100644 --- a/src/main.c +++ b/src/main.c @@ -35,6 +35,7 @@ static void cb_exit(void) { D_ENTER; + e_fs_cleanup(); E_PROF_DUMP; D_RETURN; diff --git a/src/view.c b/src/view.c index bcaf43b3c..eee9d14ec 100644 --- a/src/view.c +++ b/src/view.c @@ -2006,7 +2006,7 @@ e_view_handle_fs(EfsdEvent *ev) { E_View *v; - v = e_view_find_by_monitor_id(efsd_reply_id(ev)); + v = e_view_find_by_monitor_id(efsd_event_id(ev)); if (v) v->is_listing = 0; /* D("EFSD_CHANGE_END_EXISTS: %i %s\n", ev->efsd_filechange_event.id, @@ -2042,11 +2042,11 @@ e_view_handle_fs(EfsdEvent *ev) char *file; file = NULL; - if ( (file = efsd_reply_filename(ev)) ) + if ( (file = efsd_event_filename(ev)) ) { file = e_file_get_file(file); } - v = e_view_find_by_monitor_id(efsd_reply_id(ev)); + v = e_view_find_by_monitor_id(efsd_event_id(ev)); if ((v) && (file)) { @@ -2098,15 +2098,15 @@ e_view_handle_fs(EfsdEvent *ev) E_Icon *ic; E_View *v; - v = e_view_find_by_monitor_id(efsd_reply_id(ev)); + v = e_view_find_by_monitor_id(efsd_event_id(ev)); if (v) { - ic = e_icon_find_by_file(v, e_file_get_file(efsd_reply_filename(ev))); + ic = e_icon_find_by_file(v, e_file_get_file(efsd_event_filename(ev))); if (ic) { - ic->stat = *((struct stat*)efsd_reply_data(ev)); + ic->stat = *((struct stat*)efsd_event_data(ev)); e_icon_check_permissions(ic); } } @@ -2121,17 +2121,17 @@ e_view_handle_fs(EfsdEvent *ev) char *file; file = NULL; - if ( (file = efsd_reply_filename(ev)) ) + if ( (file = efsd_event_filename(ev)) ) { file = e_file_get_file(file); } - v = e_view_find_by_monitor_id(efsd_reply_id(ev)); + v = e_view_find_by_monitor_id(efsd_event_id(ev)); if ((v) && (file)) { ic = e_icon_find_by_file(v, file); if ((ic) && (ev->efsd_reply_event.data)) - e_icon_set_link(ic, (char*)efsd_reply_data(ev)); + e_icon_set_link(ic, (char*)efsd_event_data(ev)); e_icon_initial_show(ic); } } @@ -2147,7 +2147,7 @@ e_view_handle_fs(EfsdEvent *ev) Evas_List l; EfsdCmdId cmd; - cmd = efsd_reply_id(ev); + cmd = efsd_event_id(ev); for (l = views; l; l = l->next) { E_View *v; @@ -2246,7 +2246,7 @@ e_view_handle_fs(EfsdEvent *ev) char buf[PATH_MAX]; IF_FREE(v->bg_file); - v->bg_file = efsd_metadata_get_str(ev); + e_strdup(v->bg_file, efsd_metadata_get_str(ev)); sprintf(buf, "background_reload:%s", v->dir); ecore_add_event_timer(buf, 0.5, e_view_bg_reload_timeout, 0, v); } @@ -2397,6 +2397,7 @@ e_view_bg_reload_timeout(int val, void *data) e_view_bg_load(v); D_RETURN; + UN(val); } void diff --git a/src/view.h b/src/view.h index fcc68f51b..6bc1763a3 100644 --- a/src/view.h +++ b/src/view.h @@ -52,6 +52,16 @@ struct _E_View struct { int x, y; } location; + + /* This part stores the Efsd command + IDs for requested metadata. */ + struct { + struct { + EfsdCmdId x, y, w, h, bg; + } id; + int busy; + } metadata; + struct { /* +-----------------+ * | Wt | @@ -136,7 +146,7 @@ struct _E_View E_Background *bg; struct { - E_Scrollbar *h, *v; + E_Scrollbar *h, *v; } scrollbar; int is_listing;