summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Friesel <derf@finalrewind.org>2018-02-14 21:52:04 +0100
committerDaniel Friesel <derf@finalrewind.org>2018-02-14 21:52:04 +0100
commit202e6e6d35654010a308017f1c9c8b3e8000c970 (patch)
tree9eea4cf3a80f34f3bdee54fcd669fcf28d96de04
parent4abbd21f698945a662ed57e2dad6b6b25de9e474 (diff)
parentb9b84ee55d6b255bcf39a4f8ca6195749ef1fc5c (diff)
Merge branch 'dimension-pruning-without-preload' of https://github.com/ulteq/feh into ulteq-dimension-pruning-without-preload
-rw-r--r--src/filelist.c4
-rw-r--r--src/slideshow.c18
2 files changed, 13 insertions, 9 deletions
diff --git a/src/filelist.c b/src/filelist.c
index b569b8a..0066efd 100644
--- a/src/filelist.c
+++ b/src/filelist.c
@@ -464,9 +464,7 @@ int feh_cmp_format(void *file1, void *file2)
void feh_prepare_filelist(void)
{
- if (opt.list || opt.customlist || (opt.sort > SORT_MTIME)
- || opt.preload || opt.min_width || opt.min_height
- || (opt.max_width != UINT_MAX) || (opt.max_height != UINT_MAX)) {
+ if (opt.list || opt.preload || opt.customlist || (opt.sort > SORT_MTIME)) {
/* For these sort options, we have to preload images */
filelist = feh_file_info_preload(filelist);
if (!gib_list_length(filelist))
diff --git a/src/slideshow.c b/src/slideshow.c
index c6d82a6..6ab56fa 100644
--- a/src/slideshow.c
+++ b/src/slideshow.c
@@ -360,16 +360,22 @@ void slideshow_change_image(winwidget winwid, int change, int render)
tzoom = winwid->zoom;
}
- if ((winwidget_loadimage(winwid, FEH_FILE(current_file->data)))
- != 0) {
+ if (winwidget_loadimage(winwid, FEH_FILE(current_file->data))) {
+ unsigned int w = gib_imlib_image_get_width(winwid->im);
+ unsigned int h = gib_imlib_image_get_height(winwid->im);
+ if (opt.min_width || opt.min_height || (opt.max_width != UINT_MAX) || (opt.max_height != UINT_MAX)) {
+ if (w < opt.min_width || w > opt.max_width || h < opt.min_height || h > opt.max_height) {
+ last = current_file;
+ continue;
+ }
+ }
winwid->mode = MODE_NORMAL;
winwid->file = current_file;
- if ((winwid->im_w != gib_imlib_image_get_width(winwid->im))
- || (winwid->im_h != gib_imlib_image_get_height(winwid->im)))
+ if ((winwid->im_w != (int)w) || (winwid->im_h != (int)h))
winwid->had_resize = 1;
winwidget_reset_image(winwid);
- winwid->im_w = gib_imlib_image_get_width(winwid->im);
- winwid->im_h = gib_imlib_image_get_height(winwid->im);
+ winwid->im_w = w;
+ winwid->im_h = h;
if (opt.keep_zoom_vp) {
/* put back in: */
winwid->mode = tmode;