Hello community,

here is the log from the commit of package feh for openSUSE:Factory checked in 
at 2018-10-23 20:37:29
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/feh (Old)
 and      /work/SRC/openSUSE:Factory/.feh.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "feh"

Tue Oct 23 20:37:29 2018 rev:27 rq:643567 version:2.28

Changes:
--------
--- /work/SRC/openSUSE:Factory/feh/feh.changes  2018-07-21 10:25:36.110951935 
+0200
+++ /work/SRC/openSUSE:Factory/.feh.new/feh.changes     2018-10-23 
20:37:40.300739187 +0200
@@ -1,0 +2,9 @@
+Thu Oct 18 02:55:25 UTC 2018 - s...@suspend.net
+
+- update to 2.28
+  * Decrease loading time for RAW images by utilizing dcraw
+  * Rename --magick-timeout to --conversion-timeout 
+  * New option: --on-last-slide=hold|quit|resume
+  * Fix unintended aliasing in rotated images 
+  
+-------------------------------------------------------------------

Old:
----
  feh-2.27.1.tar.bz2
  feh-2.27.1.tar.bz2.asc

New:
----
  feh-2.28.tar.bz2
  feh-2.28.tar.bz2.asc

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ feh.spec ++++++
--- /var/tmp/diff_new_pack.ZVh4nE/_old  2018-10-23 20:37:42.020737132 +0200
+++ /var/tmp/diff_new_pack.ZVh4nE/_new  2018-10-23 20:37:42.020737132 +0200
@@ -12,12 +12,12 @@
 # license that conforms to the Open Source Definition (Version 1.9)
 # published by the Open Source Initiative.
 
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
 #
 
 
 Name:           feh
-Version:        2.27.1
+Version:        2.28
 Release:        0
 Summary:        X11 image viewer
 License:        MIT AND LGPL-2.0-or-later

++++++ feh-2.27.1.tar.bz2 -> feh-2.28.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/feh-2.27.1/ChangeLog new/feh-2.28/ChangeLog
--- old/feh-2.27.1/ChangeLog    2018-07-17 17:41:02.000000000 +0200
+++ new/feh-2.28/ChangeLog      2018-09-17 21:47:05.000000000 +0200
@@ -1,3 +1,17 @@
+Mon, 17 Sep 2018 21:17:04 +0200  Daniel Friesel <derf+...@finalrewind.org>
+
+* Release v2.28
+    * Decrease loading time for RAW images by utilizing dcraw to display the
+      embedded JPEG preview (patch by <https://github.com/ulteq>)
+    * Rename --magick-timeout to --conversion-timeout. --magick-timeout is
+      now deprecated and will be removed in a future release
+    * Fix unintened aliasing in rotated images whose rotation is not a
+      multiple of 90 degrees (patch by <https://github.com/ulteq>)
+    * New option: --on-last-slide=hold|quit|resume.
+      hold replaces --no-cycle (which is now deprecated), quit will cause feh
+      to quit after the last slide (patch by <https://github.com/ulteq>),
+      resume is the default (continue at the first image)
+
 Tue, 17 Jul 2018 17:33:10 +0200  Daniel Friesel <derf+...@finalrewind.org>
 
 * Release v2.27.1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/feh-2.27.1/config.mk new/feh-2.28/config.mk
--- old/feh-2.27.1/config.mk    2018-07-17 17:41:02.000000000 +0200
+++ new/feh-2.28/config.mk      2018-09-17 21:47:05.000000000 +0200
@@ -1,5 +1,5 @@
 PACKAGE ?= feh
-VERSION ?= 2.27.1
+VERSION ?= 2.28
 
 app ?= 0
 cam ?= 0
@@ -87,7 +87,7 @@
        MAN_EXIF = disabled
 endif
 
-MAN_DATE ?= July 17, 2018
+MAN_DATE ?= September 17, 2018
 
 # Uncomment this to use dmalloc
 #CFLAGS += -DWITH_DMALLOC
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/feh-2.27.1/man/feh.pre new/feh-2.28/man/feh.pre
--- old/feh-2.27.1/man/feh.pre  2018-07-17 17:41:02.000000000 +0200
+++ new/feh-2.28/man/feh.pre    2018-09-17 21:47:05.000000000 +0200
@@ -142,8 +142,12 @@
 .Pq supplied by ImageMagick
 is available, it also has limited support for many other filetypes, such as
 svg, xcf and otf.
+If dcraw is available,
+.Nm
+also supports RAW files provided by cameras and will display the embedded
+thumbnails.
 Use
-.Cm --magick-timeout Ar num
+.Cm --conversion-timeout Ar num
 with a non-negative value to enable it.
 .
 .
@@ -264,12 +268,6 @@
 See
 .Sx FORMAT SPECIFIERS .
 .
-.It Cm --cycle-once
-.
-Exit
-.Nm
-after one loop through the slideshow.
-.
 .It Cm -G , --draw-actions
 .
 Draw the defined actions and what they do at the top-left of the image.
@@ -394,8 +392,9 @@
 Takes an X-style geometry
 .Ar string
 like 640x480 with optional +x+y window offset.
-Note that larger images will be zoomed out to fit, but you can see them at 1:1
-by clicking the zoom button.
+Use
+.Cm --scale-down
+to scale down larger images like in fullscreen mode.
 .
 Also note that this option does not enforce the geometry, changing it by a 
tiling
 WM or manually is still possible.
@@ -482,16 +481,15 @@
 Just print out their names if imlib2 can successfully load them.
 Returns false if at least one image failed to load.
 .
-.It Cm --magick-timeout Ar timeout
+.It Cm --conversion-timeout Ar timeout
 .
 Stop trying to convert unloadable files after
 .Ar timeout
 seconds.
-A negative value disables covert / magick support altogether, a value
-of zero causes
+Negative values disable conversion altogether, zero causes
 .Nm
 to try indefinitely.
-By default, magick support is disabled.
+By default, conversion is disabled.
 .
 .It Cm --max-dimension Ar width No x Ar height
 .
@@ -552,6 +550,41 @@
 .Pq optional feature, $MAN_XINERAMA$ in this build
 Disable Xinerama support.
 .
+.It Cm --on-last-slide Cm hold | Cm quit | Cm resume
+.
+Select behaviour when trying to select the next image on the last slide
+.Pq or the previous image on the first slide
+in a slide show.
+.
+.Pp
+.
+With
+.Cm hold ,
+.Nm
+will stop advancing images in this case and continue displaying the first/last
+image, respectively.
+This is intended for linear slide shows.
+Behaviour is unspecified when using other navigation commands than previous
+and next image.
+.
+.Pp
+.
+.Cm quit
+will cause
+.Nm
+to quit when trying to advance past the last image in the slide show.
+.
+.Pp
+.
+.Cm resume
+is the default behaviour: On the last
+.Pq first
+image,
+.Nm
+will wrap around to the first
+.Pq last
+image.
+.
 .It Cm -j , --output-dir Ar directory
 .
 Save files to
@@ -1901,7 +1934,7 @@
 .Aq https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=813729
 for details.
 Workaround: Use
-.Cm --magick-timeout 5
+.Cm --conversion-timeout 5
 .Pq or some other positive value
 to load gifs with imagemagick instead, or downgrade to giflib 5.1.1, or
 upgrade to giflib 5.1.4.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/feh-2.27.1/src/filelist.c new/feh-2.28/src/filelist.c
--- old/feh-2.27.1/src/filelist.c       2018-07-17 17:41:02.000000000 +0200
+++ new/feh-2.28/src/filelist.c 2018-09-17 21:47:05.000000000 +0200
@@ -574,7 +574,7 @@
        Imlib_Load_Error err = IMLIB_LOAD_ERROR_NONE;
        Imlib_Image tmp_im;
        struct stat st;
-       signed short tmp_magick_timeout;
+       signed short tmp_conversion_timeout;
 
        if (!filename)
                return(NULL);
@@ -582,8 +582,8 @@
        /*
         * feh_load_image will fail horribly if filename is not seekable
         */
-       tmp_magick_timeout = opt.magick_timeout;
-       opt.magick_timeout = -1;
+       tmp_conversion_timeout = opt.conversion_timeout;
+       opt.conversion_timeout = -1;
        if (!stat(filename, &st) && S_ISREG(st.st_mode)) {
                tmp_im = imlib_load_image_with_error_return(filename, &err);
                if (err == IMLIB_LOAD_ERROR_NONE) {
@@ -594,7 +594,7 @@
                        return NULL;
                }
        }
-       opt.magick_timeout = tmp_magick_timeout;
+       opt.conversion_timeout = tmp_conversion_timeout;
 
        errno = 0;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/feh-2.27.1/src/help.raw new/feh-2.28/src/help.raw
--- old/feh-2.27.1/src/help.raw 2018-07-17 17:41:02.000000000 +0200
+++ new/feh-2.28/src/help.raw   2018-09-17 21:47:05.000000000 +0200
@@ -38,7 +38,8 @@
      --auto-rotate         Rotate images according to Exif info (if compiled 
with exif=1)
  -^, --title TITLE         Set window title (see FORMAT SPECIFIERS)
  -D, --slideshow-delay NUM Set delay between automatically changing slides
-     --cycle-once          Exit after one loop through the slideshow
+     --on-last-slide quit  Exit after one loop through the slide show
+     --on-last-slide hold  Stop at both ends of the filelist
  -R, --reload NUM          Reload images after NUM seconds
  -k, --keep-http           Keep local copies when viewing HTTP/FTP files
      --insecure            Disable peer/host verification when using HTTPS.
@@ -90,8 +91,8 @@
      --no-xinerama         Disable Xinerama support
      --no-screen-clip      Do not limit window size to screen size
  -Y, --hide-pointer        Hide the pointer
-     --magick-timeout INT  Load unknown files with ImageMagick, timeout after
-                           INT seconds (0: no timeout)
+     --conversion-timeout  INT  Load unknown files with dcraw or ImageMagick,
+                           timeout after INT seconds (0: no timeout)
      --min-dimension WxH   Only show images with width >= W and height >= H
      --max-dimension WxH   Only show images with width <= W and height <= H
      --scroll-step COUNT   scroll COUNT pixels when movement key is pressed
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/feh-2.27.1/src/imlib.c new/feh-2.28/src/imlib.c
--- old/feh-2.27.1/src/imlib.c  2018-07-17 17:41:02.000000000 +0200
+++ new/feh-2.28/src/imlib.c    2018-09-17 21:47:05.000000000 +0200
@@ -61,7 +61,9 @@
 
 int childpid = 0;
 
+static int feh_file_is_raw(char *filename);
 static char *feh_http_load_image(char *url);
+static char *feh_dcraw_load_image(char *filename);
 static char *feh_magick_load_image(char *filename);
 
 #ifdef HAVE_LIBXINERAMA
@@ -213,8 +215,7 @@
 int feh_load_image(Imlib_Image * im, feh_file * file)
 {
        Imlib_Load_Error err = IMLIB_LOAD_ERROR_NONE;
-       enum { SRC_IMLIB, SRC_HTTP, SRC_MAGICK } image_source =
-               SRC_IMLIB;
+       enum { SRC_IMLIB, SRC_HTTP, SRC_MAGICK, SRC_DCRAW } image_source = 
SRC_IMLIB;
        char *tmpname = NULL;
        char *real_filename = NULL;
 
@@ -229,16 +230,23 @@
                if ((tmpname = feh_http_load_image(file->filename)) == NULL)
                        err = IMLIB_LOAD_ERROR_FILE_DOES_NOT_EXIST;
        }
+       else if (opt.conversion_timeout >= 0 && 
feh_file_is_raw(file->filename)) {
+               image_source = SRC_DCRAW;
+               tmpname = feh_dcraw_load_image(file->filename);
+               if (!tmpname)
+                       err = IMLIB_LOAD_ERROR_NO_LOADER_FOR_FILE_FORMAT;
+       }
        else
                *im = imlib_load_image_with_error_return(file->filename, &err);
 
-       if ((err == IMLIB_LOAD_ERROR_UNKNOWN)
-                       || (err == IMLIB_LOAD_ERROR_NO_LOADER_FOR_FILE_FORMAT)) 
{
+       if (opt.conversion_timeout >= 0 && (
+                       (err == IMLIB_LOAD_ERROR_UNKNOWN) ||
+                       (err == IMLIB_LOAD_ERROR_NO_LOADER_FOR_FILE_FORMAT))) {
                image_source = SRC_MAGICK;
                tmpname = feh_magick_load_image(file->filename);
        }
 
-       if ((image_source != SRC_IMLIB) && tmpname) {
+       if (tmpname) {
                *im = imlib_load_image_with_error_return(tmpname, &err);
                if (!err && im) {
                        real_filename = file->filename;
@@ -298,6 +306,95 @@
        return(1);
 }
 
+static int feh_file_is_raw(char *filename)
+{
+       childpid = fork();
+       if (childpid == -1) {
+               perror("fork");
+               return 0;
+       }
+
+       if (childpid == 0) {
+               if (opt.quiet) {
+                       int devnull = open("/dev/null", O_WRONLY);
+                       dup2(devnull, 1);
+                       dup2(devnull, 2);
+               }
+               execlp("dcraw", "dcraw", "-i", filename, NULL);
+               _exit(1);
+       } else {
+               int status;
+               do {
+                       waitpid(childpid, &status, WUNTRACED);
+                       if (WIFEXITED(status)) {
+                               return !WEXITSTATUS(status);
+                       }
+               } while (!WIFEXITED(status) && !WIFSIGNALED(status));
+       }
+
+       return 0;
+}
+
+static char *feh_dcraw_load_image(char *filename)
+{
+       char *basename;
+       char *tmpname;
+       char *sfn;
+       int fd = -1;
+
+       basename = strrchr(filename, '/');
+
+       if (basename == NULL)
+               basename = filename;
+       else
+               basename++;
+
+       tmpname = feh_unique_filename("/tmp/", basename);
+
+       if (strlen(tmpname) > (NAME_MAX-6))
+               tmpname[NAME_MAX-7] = '\0';
+
+       sfn = estrjoin("_", tmpname, "XXXXXX", NULL);
+       free(tmpname);
+
+       fd = mkstemp(sfn);
+
+       if (fd == -1) {
+               free(sfn);
+               return NULL;
+       }
+
+       childpid = fork();
+       if (childpid == -1) {
+               weprintf("%s: Can't load with dcraw. Fork failed:", filename);
+               unlink(sfn);
+               free(sfn);
+               close(fd);
+               return NULL;
+       } else if (childpid == 0) {
+
+               close(1);
+               dup(fd);
+               close(fd);
+
+               alarm(opt.conversion_timeout);
+               execlp("dcraw", "dcraw", "-c", "-e", filename, NULL);
+               _exit(1);
+       }
+
+       int status;
+       waitpid(-1, &status, 0);
+       if (WIFSIGNALED(status)) {
+               unlink(sfn);
+               free(sfn);
+               sfn = NULL;
+               if (!opt.quiet)
+                       weprintf("%s - Conversion took too long, skipping", 
filename);
+       }
+
+       return sfn;
+}
+
 static char *feh_magick_load_image(char *filename)
 {
        char *argv_fn;
@@ -309,9 +406,6 @@
        int status;
        char created_tempdir = 0;
 
-       if (opt.magick_timeout < 0)
-               return NULL;
-
        basename = strrchr(filename, '/');
 
        if (basename == NULL)
@@ -387,10 +481,10 @@
                _exit(1);
        }
        else {
-               alarm(opt.magick_timeout);
+               alarm(opt.conversion_timeout);
                waitpid(childpid, &status, 0);
                kill(childpid, SIGKILL);
-               if (opt.magick_timeout > 0 && !alarm(0)) {
+               if (opt.conversion_timeout > 0 && !alarm(0)) {
                        unlink(sfn);
                        free(sfn);
                        sfn = NULL;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/feh-2.27.1/src/index.c new/feh-2.28/src/index.c
--- old/feh-2.27.1/src/index.c  2018-07-17 17:41:02.000000000 +0200
+++ new/feh-2.28/src/index.c    2018-09-17 21:47:05.000000000 +0200
@@ -147,9 +147,16 @@
        index_image_height = h + title_area_h;
        im_main = imlib_create_image(index_image_width, index_image_height);
 
-       if (!im_main)
-               eprintf("Failed to create %dx%d pixels (%d MB) index image. Do 
you have enough RAM?",
-                               index_image_width, index_image_height, 
index_image_width * index_image_height * 4 / (1024*1024));
+       if (!im_main) {
+               if (index_image_height >= 32768 || index_image_width >= 32768) {
+                       eprintf("Failed to create %dx%d pixels (%d MB) index 
image.\n"
+                                       "This is probably due to Imlib2 issues 
when dealing with images larger than 32k x 32k pixels.",
+                                       index_image_width, index_image_height, 
index_image_width * index_image_height * 4 / (1024*1024));
+               } else {
+                       eprintf("Failed to create %dx%d pixels (%d MB) index 
image. Do you have enough RAM?",
+                                       index_image_width, index_image_height, 
index_image_width * index_image_height * 4 / (1024*1024));
+               }
+       }
 
        if (bg_im)
                gib_imlib_blend_image_onto_image(im_main, bg_im,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/feh-2.27.1/src/options.c new/feh-2.28/src/options.c
--- old/feh-2.27.1/src/options.c        2018-07-17 17:41:02.000000000 +0200
+++ new/feh-2.28/src/options.c  2018-09-17 21:47:05.000000000 +0200
@@ -55,7 +55,7 @@
        opt.display = 1;
        opt.aspect = 1;
        opt.slideshow_delay = 0.0;
-       opt.magick_timeout = -1;
+       opt.conversion_timeout = -1;
        opt.thumb_w = 60;
        opt.thumb_h = 60;
        opt.thumb_redraw = 10;
@@ -415,6 +415,8 @@
                {"insecure"      , 0, 0, 240},
                {"no-recursive"  , 0, 0, 241},
                {"cache-size"    , 1, 0, 243},
+               {"on-last-slide" , 1, 0, 244},
+               {"conversion-timeout" , 1, 0, 245},
                {"version-sort"  , 0, 0, 246},
                {"offset"        , 1, 0, 247},
                {0, 0, 0, 0}
@@ -693,7 +695,8 @@
                        opt.index_info = estrdup(optarg);
                        break;
                case 208:
-                       opt.magick_timeout = atoi(optarg);
+                       weprintf("--magick-timeout is deprecated, please use 
--conversion-timeout instead");
+                       opt.conversion_timeout = atoi(optarg);
                        break;
                case 209:
                        opt.actions[1] = estrdup(optarg);
@@ -740,7 +743,8 @@
                        break;
 #endif
                case 224:
-                       opt.cycle_once = 1;
+                       weprintf("--cycle-once is deprecated, please use 
--on-last-slide=quit instead");
+                       opt.on_last_slide = ON_LAST_SLIDE_QUIT;
                        break;
                case 225:
                        opt.xinerama = 0;
@@ -783,6 +787,21 @@
                        if (opt.cache_size > 2048)
                                opt.cache_size = 2048;
                        break;
+               case 244:
+                       if (!strcmp(optarg, "quit")) {
+                               opt.on_last_slide = ON_LAST_SLIDE_QUIT;
+                       } else if (!strcmp(optarg, "hold")) {
+                               opt.on_last_slide = ON_LAST_SLIDE_HOLD;
+                       } else if (!strcmp(optarg, "resume")) {
+                               opt.on_last_slide = ON_LAST_SLIDE_RESUME;
+                       } else {
+                               weprintf("Unrecognized on-last-slide action 
\"%s\"."
+                                               "Supported actions: hold, 
resume, quit\n", optarg);
+                       }
+                       break;
+               case 245:
+                       opt.conversion_timeout = atoi(optarg);
+                       break;
                case 246:
                        opt.version_sort = 1;
                        break;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/feh-2.27.1/src/options.h new/feh-2.28/src/options.h
--- old/feh-2.27.1/src/options.h        2018-07-17 17:41:02.000000000 +0200
+++ new/feh-2.28/src/options.h  2018-09-17 21:47:05.000000000 +0200
@@ -27,6 +27,12 @@
 #ifndef OPTIONS_H
 #define OPTIONS_H
 
+enum on_last_slide_action {
+       ON_LAST_SLIDE_RESUME = 0,
+       ON_LAST_SLIDE_QUIT,
+       ON_LAST_SLIDE_HOLD
+};
+
 struct __fehoptions {
        unsigned char multiwindow;
        unsigned char montage;
@@ -68,7 +74,7 @@
        unsigned char draw_actions;
        unsigned char draw_info;
        unsigned char cache_thumbnails;
-       unsigned char cycle_once;
+       unsigned char on_last_slide;
        unsigned char hold_actions[10];
        unsigned char text_bg;
        unsigned char no_fehbg;
@@ -133,7 +139,7 @@
 
        double slideshow_delay;
 
-       signed short magick_timeout;
+       signed int conversion_timeout;
 
        Imlib_Font menu_fn;
 };
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/feh-2.27.1/src/slideshow.c 
new/feh-2.28/src/slideshow.c
--- old/feh-2.27.1/src/slideshow.c      2018-07-17 17:41:02.000000000 +0200
+++ new/feh-2.28/src/slideshow.c        2018-09-17 21:47:05.000000000 +0200
@@ -215,6 +215,7 @@
 void slideshow_change_image(winwidget winwid, int change, int render)
 {
        gib_list *last = NULL;
+       gib_list *previous_file = current_file;
        int i = 0;
        int jmp = 1;
        /* We can't use filelist_len in the for loop, since that changes when we
@@ -222,9 +223,12 @@
         */
        int our_filelist_len = filelist_len;
 
+       if (opt.slideshow_delay > 0.0)
+               feh_add_timer(cb_slide_timer, winwid, opt.slideshow_delay, 
"SLIDE_CHANGE");
+
        /* Without this, clicking a one-image slideshow reloads it. Not very *
           intelligent behaviour :-) */
-       if (filelist_len < 2 && opt.cycle_once == 0)
+       if (filelist_len < 2 && opt.on_last_slide != ON_LAST_SLIDE_QUIT)
                return;
 
        /* Ok. I do this in such an odd way to ensure that if the last or first 
*
@@ -234,9 +238,11 @@
        if (change == SLIDE_FIRST) {
                current_file = gib_list_last(filelist);
                change = SLIDE_NEXT;
+               previous_file = NULL;
        } else if (change == SLIDE_LAST) {
                current_file = filelist;
                change = SLIDE_PREV;
+               previous_file = NULL;
        }
 
        /* The for loop prevents us looping infinitely */
@@ -332,6 +338,12 @@
                        last = NULL;
                }
 
+               if (opt.on_last_slide == ON_LAST_SLIDE_HOLD && previous_file &&
+                       ((current_file == filelist && change == SLIDE_NEXT) ||
+                       (previous_file == filelist && change == SLIDE_PREV))) {
+                               current_file = previous_file;
+               }
+
                if (winwidget_loadimage(winwid, FEH_FILE(current_file->data))) {
                        int w = gib_imlib_image_get_width(winwid->im);
                        int h = gib_imlib_image_get_height(winwid->im);
@@ -359,8 +371,6 @@
        if (filelist_len == 0)
                eprintf("No more slides in show");
 
-       if (opt.slideshow_delay > 0.0)
-               feh_add_timer(cb_slide_timer, winwid, opt.slideshow_delay, 
"SLIDE_CHANGE");
        return;
 }
 
@@ -567,10 +577,10 @@
 
                doomed = current_file;
                /*
-                * work around feh_list_jump exiting if cycle_once is enabled
+                * work around feh_list_jump exiting if ON_LAST_SLIDE_QUIT is 
set
                 * and no further files are left (we need to delete first)
                 */
-               if (opt.cycle_once && ! doomed->next && do_delete) {
+               if (opt.on_last_slide == ON_LAST_SLIDE_QUIT && ! doomed->next 
&& do_delete) {
                        feh_file_rm_and_free(filelist, doomed);
                        exit(0);
                }
@@ -646,7 +656,7 @@
                        if (ret->next) {
                                ret = ret->next;
                        } else {
-                               if (opt.cycle_once) {
+                               if (opt.on_last_slide == ON_LAST_SLIDE_QUIT) {
                                        exit(0);
                                }
                                if (opt.randomize) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/feh-2.27.1/src/thumbnail.c 
new/feh-2.28/src/thumbnail.c
--- old/feh-2.27.1/src/thumbnail.c      2018-07-17 17:41:02.000000000 +0200
+++ new/feh-2.28/src/thumbnail.c        2018-09-17 21:47:05.000000000 +0200
@@ -149,9 +149,16 @@
        D(("imlib_create_image(%d, %d)\n", index_image_width, 
index_image_height));
        td.im_main = imlib_create_image(index_image_width, index_image_height);
 
-       if (!td.im_main)
-               eprintf("Failed to create %dx%d pixels (%d MB) index image. Do 
you have enough RAM?",
-                               index_image_width, index_image_height, 
index_image_width * index_image_height * 4 / (1024*1024));
+       if (!td.im_main) {
+               if (index_image_height >= 32768 || index_image_width >= 32768) {
+                       eprintf("Failed to create %dx%d pixels (%d MB) index 
image.\n"
+                                       "This is probably due to Imlib2 issues 
when dealing with images larger than 32k x 32k pixels.",
+                                       index_image_width, index_image_height, 
index_image_width * index_image_height * 4 / (1024*1024));
+               } else {
+                       eprintf("Failed to create %dx%d pixels (%d MB) index 
image. Do you have enough RAM?",
+                                       index_image_width, index_image_height, 
index_image_width * index_image_height * 4 / (1024*1024));
+               }
+       }
 
        gib_imlib_image_set_has_alpha(td.im_main, 1);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/feh-2.27.1/src/winwidget.c 
new/feh-2.28/src/winwidget.c
--- old/feh-2.27.1/src/winwidget.c      2018-07-17 17:41:02.000000000 +0200
+++ new/feh-2.28/src/winwidget.c        2018-09-17 21:47:05.000000000 +0200
@@ -520,7 +520,7 @@
        D(("sx: %d sy: %d sw: %d sh: %d dx: %d dy: %d dw: %d dh: %d zoom: %f\n",
           sx, sy, sw, sh, dx, dy, dw, dh, winwid->zoom));
 
-       if ((winwid->zoom != 1.0) && !force_alias && !winwid->force_aliasing)
+       if ((winwid->zoom != 1.0 || winwid->has_rotated) && !force_alias && 
!winwid->force_aliasing)
                antialias = 1;
 
        D(("winwidget_render(): winwid->im_angle = %f\n", winwid->im_angle));


Reply via email to