diff options
author | Naïm Favier <n@monade.li> | 2024-06-02 15:31:33 +0200 |
---|---|---|
committer | Birte Friesel <derf@chaosdorf.de> | 2024-06-30 11:40:06 +0200 |
commit | 08b269d172acc2b4cb9b9336e2cd8097d89ef6a7 (patch) | |
tree | ece7aca6a7eccf8ca37b863b6ce2dd6f4abf2402 /src/slideshow.c | |
parent | 186dab662b50e7aa1e15674c468d35810a691409 (diff) |
cache stat(2) calls
When the user requests sorting by size or mtime, do a "soft preload" of
the file list that only calls stat(2) without loading images.
This avoids calling stat(2) repeatedly on the same files when sorting
the file list, and achieves faster startup on slow filesystems.
Diffstat (limited to 'src/slideshow.c')
-rw-r--r-- | src/slideshow.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/slideshow.c b/src/slideshow.c index a53749e..3944a68 100644 --- a/src/slideshow.c +++ b/src/slideshow.c @@ -496,14 +496,14 @@ char *feh_printf(char *str, feh_file * file, winwidget winwid) } break; case 's': - if (file && (file->info || !feh_file_info_load(file, NULL))) { - snprintf(buf, sizeof(buf), "%d", file->info->size); + if (file && (file->size >= 0 || !feh_file_stat(file))) { + snprintf(buf, sizeof(buf), "%d", file->size); strncat(ret, buf, sizeof(ret) - strlen(ret) - 1); } break; case 'S': - if (file && (file->info || !feh_file_info_load(file, NULL))) { - strncat(ret, format_size(file->info->size), sizeof(ret) - strlen(ret) - 1); + if (file && (file->size >= 0 || !feh_file_stat(file))) { + strncat(ret, format_size(file->size), sizeof(ret) - strlen(ret) - 1); } break; case 't': |