# HG changeset patch # User nadvornik # Date 1245615293 0 # Node ID da8afd03152fb4ed28e2d73abb9210f586c1ea37 # Parent 71b29f70d08ca7082a39a0d9ce6891d4f17f211a improved file list update priority - update list with lower priority than the priority of file operations - make sure that it is updated at least once per 2 seconds diff -r 71b29f70d08c -r da8afd03152f src/typedefs.h --- a/src/typedefs.h Sun Jun 21 13:28:02 2009 +0000 +++ b/src/typedefs.h Sun Jun 21 20:14:53 2009 +0000 @@ -752,6 +752,7 @@ /* refresh */ guint refresh_idle_id; /* event source id */ + time_t time_refresh_set; /* time when refresh_idle_id was set */ /* file list for edit menu */ GList *editmenu_fd_list; diff -r 71b29f70d08c -r da8afd03152f src/view_file.c --- a/src/view_file.c Sun Jun 21 13:28:02 2009 +0000 +++ b/src/view_file.c Sun Jun 21 20:14:53 2009 +0000 @@ -1010,7 +1010,16 @@ { if (!vf->refresh_idle_id) { - vf->refresh_idle_id = g_idle_add(vf_refresh_idle_cb, vf); + vf->time_refresh_set = time(NULL); + /* file operations run with G_PRIORITY_DEFAULT_IDLE */ + vf->refresh_idle_id = g_idle_add_full(G_PRIORITY_DEFAULT_IDLE + 50, vf_refresh_idle_cb, vf, NULL); + } + else if (time(NULL) - vf->time_refresh_set > 1) + { + /* more than 1 sec since last update - increase priority */ + vf_refresh_idle_cancel(vf); + vf->time_refresh_set = time(NULL); + vf->refresh_idle_id = g_idle_add_full(G_PRIORITY_DEFAULT_IDLE - 50, vf_refresh_idle_cb, vf, NULL); } }