diff options
author | Dmitrij D. Czarkoff <czarkoff@gmail.com> | 2015-12-30 17:44:48 +0100 |
---|---|---|
committer | Dmitrij D. Czarkoff <czarkoff@gmail.com> | 2015-12-30 17:44:48 +0100 |
commit | 1ca3d027dee0c693265a2d4519ee6c7ebef6fd1c (patch) | |
tree | 52715e774fb38be7efb0a70f301c63f15f4fb10f /src/navigator.c | |
parent | c61a0a90db45099b3a572979774eba8dd0e82819 (diff) | |
download | imv-1ca3d027dee0c693265a2d4519ee6c7ebef6fd1c.tar.gz |
Reduce amount of stat(2) calls
Add 8-bit variable that is passed to imv_navigator_poll_changed(). Decrement it
on each run of main loop. When it gets to 0, call stat(2).
Diffstat (limited to 'src/navigator.c')
-rw-r--r-- | src/navigator.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/src/navigator.c b/src/navigator.c index c504cd8..fb2a3cd 100644 --- a/src/navigator.c +++ b/src/navigator.c @@ -210,19 +210,22 @@ int imv_navigator_find_path(struct imv_navigator *nav, const char *path) return -1; } -int imv_navigator_poll_changed(struct imv_navigator *nav) +int imv_navigator_poll_changed(struct imv_navigator *nav, const int nopoll) { if(nav->changed) { nav->changed = 0; return 1; - } else { + } + + if(!nopoll) { struct stat file_info; - if (stat(nav->paths[nav->cur_path], &file_info) == -1) + if(stat(nav->paths[nav->cur_path], &file_info) == -1) { return 0; - if (nav->mtimes[nav->cur_path] != file_info.st_mtim.tv_sec) { + } + if(nav->mtimes[nav->cur_path] != file_info.st_mtim.tv_sec) { nav->mtimes[nav->cur_path] = file_info.st_mtim.tv_sec; return 1; } - return 0; } + return 0; } |