Hello community,

here is the log from the commit of package feh for openSUSE:Factory checked in 
at 2020-09-15 16:27:00
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/feh (Old)
 and      /work/SRC/openSUSE:Factory/.feh.new.4249 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "feh"

Tue Sep 15 16:27:00 2020 rev:37 rq:834095 version:3.5

Changes:
--------
--- /work/SRC/openSUSE:Factory/feh/feh.changes  2020-06-19 17:26:19.300405826 
+0200
+++ /work/SRC/openSUSE:Factory/.feh.new.4249/feh.changes        2020-09-15 
16:27:23.810545472 +0200
@@ -1,0 +2,8 @@
+Sat Sep 12 09:45:38 UTC 2020 - Dirk Mueller <dmuel...@suse.com>
+
+- update to 3.5:
+  * Enable --version-sort on systems without strverscmp support. 
+  * Add %a format specifier (slideshow state: "playing" / "paused")
+  * Fix crashes when combining --reload and --multiwindow 
+
+-------------------------------------------------------------------

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

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

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

Other differences:
------------------
++++++ feh.spec ++++++
--- /var/tmp/diff_new_pack.QkNCdb/_old  2020-09-15 16:27:25.146546751 +0200
+++ /var/tmp/diff_new_pack.QkNCdb/_new  2020-09-15 16:27:25.150546755 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           feh
-Version:        3.4.1
+Version:        3.5
 Release:        0
 Summary:        X11 image viewer
 License:        MIT AND LGPL-2.0-or-later

++++++ feh-3.4.1.tar.bz2 -> feh-3.5.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/feh-3.4.1/.github/workflows/c.yml 
new/feh-3.5/.github/workflows/c.yml
--- old/feh-3.4.1/.github/workflows/c.yml       2020-05-29 23:55:03.000000000 
+0200
+++ new/feh-3.5/.github/workflows/c.yml 2020-08-29 08:50:28.000000000 +0200
@@ -21,16 +21,18 @@
 
     steps:
       - uses: actions/checkout@v2
+      - name: APT
+        run: sudo apt-get -y update
       - name: Install Dependencies
-        run: sudo apt install build-essential libx11-dev libxt-dev 
libimlib2-dev libtest-command-perl libtest-simple-perl
+        run: sudo apt-get -y install build-essential libx11-dev libxt-dev 
libimlib2-dev libtest-command-perl libtest-simple-perl
       - name: Install libcurl
         if: matrix.curl
-        run: sudo apt install libcurl4-openssl-dev
+        run: sudo apt-get -y  install libcurl4-openssl-dev
       - name: Install libexif
         if: matrix.exif
-        run: sudo apt install libexif-dev
+        run: sudo apt-get -y  install libexif-dev
       - name: Install Xinerama
         if: matrix.xinerama
-        run: sudo apt install libxinerama-dev
+        run: sudo apt-get -y  install libxinerama-dev
       - name: Build and Test
         run: for inotify in 0 1; do for verscmp in 0 1; do make curl=${{ 
matrix.curl }} exif=${{ matrix.exif }} inotify=$inotify verscmp=$verscmp 
xinerama=${{ matrix.xinerama }} && make test && make clean; done; done
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/feh-3.4.1/ChangeLog new/feh-3.5/ChangeLog
--- old/feh-3.4.1/ChangeLog     2020-05-29 23:55:03.000000000 +0200
+++ new/feh-3.5/ChangeLog       2020-08-29 08:50:28.000000000 +0200
@@ -1,3 +1,13 @@
+Sat, 29 Aug 2020 08:49:08 +0200  Daniel Friesel <derf+...@finalrewind.org>
+
+* Release v3.5
+    * Enable --version-sort on systems without strverscmp support. This
+      works by bundling the strverscmp of musl libc with feh and using it
+      when feh is compiled without the verscmp flag (i.e., when the system
+      libc does not provide the verscmp function). Patch by Tim van der Molen
+    * Add %a format specifier (slideshow state: "playing" / "paused")
+    * Fix crashes when combining --reload and --multiwindow
+
 Fri, 29 May 2020 23:52:35 +0200  Daniel Friesel <derf+...@finalrewind.org>
 
 * Release v3.4.1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/feh-3.4.1/README.md new/feh-3.5/README.md
--- old/feh-3.4.1/README.md     2020-05-29 23:55:03.000000000 +0200
+++ new/feh-3.5/README.md       2020-08-29 08:50:28.000000000 +0200
@@ -91,7 +91,7 @@
 | help | 0 | include help text (refers to the manpage otherwise) |
 | inotify | 0 | enable inotify, needed for `--auto-reload` |
 | stat64 | 0 | Support CIFS shares from 64bit hosts on 32bit machines |
-| verscmp | 1 | Support naturing sorting (`--version-sort`). Requires a 
GNU-compatible libc exposing `strverscmp` |
+| verscmp | 1 | Whether your libc provides `strvercmp()`. If set to 0, feh 
will use an internal implementation. |
 | xinerama | 1 | Support Xinerama/XRandR multiscreen setups |
 
 For example, `make xinerama=0 debug=1` will disable Xinerama support and
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/feh-3.4.1/config.mk new/feh-3.5/config.mk
--- old/feh-3.4.1/config.mk     2020-05-29 23:55:03.000000000 +0200
+++ new/feh-3.5/config.mk       2020-08-29 08:50:28.000000000 +0200
@@ -1,5 +1,5 @@
 PACKAGE ?= feh
-VERSION ?= 3.4.1
+VERSION ?= 3.5
 
 app ?= 0
 curl ?= 1
@@ -64,10 +64,7 @@
 endif
 
 ifeq (${verscmp},1)
-       CFLAGS += -DHAVE_VERSCMP
-       MAN_VERSCMP = available
-else
-       MAN_VERSCMP = not available
+       CFLAGS += -DHAVE_STRVERSCMP
 endif
 
 ifeq (${xinerama},1)
@@ -93,7 +90,7 @@
        MAN_INOTIFY = disabled
 endif
 
-MAN_DATE ?= May 29, 2020
+MAN_DATE ?= August 29, 2020
 
 # Uncomment this to use dmalloc
 #CFLAGS += -DWITH_DMALLOC
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/feh-3.4.1/man/Makefile new/feh-3.5/man/Makefile
--- old/feh-3.4.1/man/Makefile  2020-05-29 23:55:03.000000000 +0200
+++ new/feh-3.5/man/Makefile    2020-08-29 08:50:28.000000000 +0200
@@ -13,7 +13,6 @@
        -e 's/\$$MAN_DEBUG\$$/${MAN_DEBUG}/' \
        -e 's/\$$MAN_EXIF\$$/${MAN_EXIF}/' \
        -e 's/\$$MAN_INOTIFY\$$/${MAN_INOTIFY}/' \
-       -e 's/\$$MAN_VERSCMP\$$/${MAN_VERSCMP}/' \
        -e 's/\$$MAN_XINERAMA\$$/${MAN_XINERAMA}/' \
        < ${@:.1=.pre} > $@
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/feh-3.4.1/man/feh.pre new/feh-3.5/man/feh.pre
--- old/feh-3.4.1/man/feh.pre   2020-05-29 23:55:03.000000000 +0200
+++ new/feh-3.5/man/feh.pre     2020-08-29 08:50:28.000000000 +0200
@@ -29,16 +29,13 @@
 .Bl -bullet -compact
 .
 .It
-remote file support: libcurl $MAN_CURL$
-.
-.It
-natural sorting option $MAN_VERSCMP$
+libcurl remote file support $MAN_CURL$
 .
 .It
 Xinerama multi-monitor support $MAN_XINERAMA$
 .
 .It
-builtin EXIF reader $MAN_EXIF$
+libexif builtin EXIF reader $MAN_EXIF$
 .
 .It
 inotify-based auto-reload of changed files $MAN_INOTIFY$
@@ -221,7 +218,7 @@
 .Sx FORMAT SPECIFIERS
 for details.
 Example usage:
-.Qq feh -A Qo mv ~/images/%N Qc * .
+.Qq feh -A Qo mv %F ~/images/%N Qc * .
 .
 .It Cm --action1 No .. Cm --action9 Oo Ar flag Oc Ns Oo [ Ar title ] Oc Ns Ar 
action
 .
@@ -239,6 +236,10 @@
 .Cm --reload=0
 option.
 .
+.Pp
+.
+Automatic reload is not supported in montage, index, or thumbnail mode.
+.
 .It Cm --auto-rotate
 .
 .Pq optional feature, $MAN_EXIF$ in this build
@@ -711,6 +712,7 @@
 .Pp
 .
 Setting this option causes inotify-based auto-reload to be disabled.
+Reload is not supported in montage, index, or thumbnail mode.
 .
 .It Cm -n , --reverse
 .
@@ -887,7 +889,6 @@
 .
 .It Cm --version-sort
 .
-.Pq optional feature, $MAN_VERSCMP$ in this build
 When combined with
 .Cm --sort name , --sort filename ,
 or
@@ -1204,6 +1205,10 @@
 .
 .Bl -tag -width indent
 .
+.It %a
+.
+Information about slideshow state (playing/paused)
+.
 .It %f
 .
 Image path/filename
@@ -2113,23 +2118,11 @@
 steps to reproduce the bug and, if necessary, images to reproduce it.
 .
 .
-.Sh FUTURE PLANS
-.
-Plans for the following releases:
-.
-.Bl -bullet -compact
-.
-.It
-Make zoom options more intuitive
-.
-.El
-.
-.
 .Sh LICENSE
 .
 Copyright (C) 1999, 2000 by Paul Duncan.
-Copyright (C) 1999, 2000 by Tom Gilbert (and various contributors).
-Copyright (C) 2010-2020 by Daniel Friesel (and even more contributors).
+Copyright (C) 1999, 2000 by Tom Gilbert and contributors.
+Copyright (C) 2010-2020 by Daniel Friesel and contributors.
 .
 .Pp
 .
@@ -2171,5 +2164,5 @@
 .
 .Pp
 .
-See also:
+Website:
 https://feh.finalrewind.org
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/feh-3.4.1/src/Makefile new/feh-3.5/src/Makefile
--- old/feh-3.4.1/src/Makefile  2020-05-29 23:55:03.000000000 +0200
+++ new/feh-3.5/src/Makefile    2020-08-29 08:50:28.000000000 +0200
@@ -34,6 +34,10 @@
                exif_nikon.c
 endif
 
+ifneq (${verscmp},1)
+       TARGETS += strverscmp.c
+endif
+
 OBJECTS = ${TARGETS:.c=.o}
 
 I_SRCS = ${shell echo *.raw}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/feh-3.4.1/src/deps.mk new/feh-3.5/src/deps.mk
--- old/feh-3.4.1/src/deps.mk   2020-05-29 23:55:03.000000000 +0200
+++ new/feh-3.5/src/deps.mk     2020-08-29 08:50:28.000000000 +0200
@@ -54,4 +54,4 @@
  options.h wallpaper.h
 winwidget.o: winwidget.c feh.h gib_hash.h gib_list.h gib_imlib.h \
  gib_style.h structs.h menu.h utils.h getopt.h debug.h filelist.h \
- winwidget.h options.h events.h
+ winwidget.h options.h events.h timers.h
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/feh-3.4.1/src/feh.h new/feh-3.5/src/feh.h
--- old/feh-3.4.1/src/feh.h     2020-05-29 23:55:03.000000000 +0200
+++ new/feh-3.5/src/feh.h       2020-08-29 08:50:28.000000000 +0200
@@ -31,7 +31,7 @@
  * strverscmp(3) is a GNU extension. In most supporting C libraries it
  * requires _GNU_SOURCE to be defined.
  */
-#ifdef HAVE_VERSCMP
+#ifdef HAVE_STRVERSCMP
 #define _GNU_SOURCE
 #endif
 
@@ -182,6 +182,9 @@
 #ifdef HAVE_INOTIFY
 void feh_event_handle_inotify(void);
 #endif
+#ifndef HAVE_STRVERSCMP
+int strverscmp(const char *l0, const char *r0);
+#endif
 
 /* Imlib stuff */
 extern Display *disp;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/feh-3.4.1/src/filelist.c new/feh-3.5/src/filelist.c
--- old/feh-3.4.1/src/filelist.c        2020-05-29 23:55:03.000000000 +0200
+++ new/feh-3.5/src/filelist.c  2020-08-29 08:50:28.000000000 +0200
@@ -402,7 +402,6 @@
        dst[n] = '\0';
 }
 
-#ifdef HAVE_VERSCMP
 static inline int strcmp_or_strverscmp(const char *s1, const char *s2)
 {
        if (!opt.version_sort)
@@ -410,9 +409,6 @@
        else
                return(strverscmp(s1, s2));
 }
-#else
-#define strcmp_or_strverscmp strcmp
-#endif
 
 int feh_cmp_filename(void *file1, void *file2)
 {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/feh-3.4.1/src/help.raw new/feh-3.5/src/help.raw
--- old/feh-3.4.1/src/help.raw  2020-05-29 23:55:03.000000000 +0200
+++ new/feh-3.5/src/help.raw    2020-08-29 08:50:28.000000000 +0200
@@ -124,6 +124,7 @@
                            font is specified, a title will not be printed
 
 FORMAT SPECIFIERS
+ %a     information about slideshow state (playing/paused)
  %f     image path/filename
  %F     image path/filename (shell-escaped)
  %g     window dimensions (\"width,height\") in pixels
@@ -193,8 +194,8 @@
  <KEYPAD UP>             Move the image up
  <KEYPAD DOWN>           Move the image down
  <KEYPAD BEGIN>          Antialias the image
- <KEYPAD +>              Zoom in
- <KEYPAD ->              Zoom out
+ <KEYPAD +>, <UP>        Zoom in
+ <KEYPAD ->, <DOWN>      Zoom out
  <KEYPAD *>              Zoom to 100%
  <KEYPAD />              Zoom to fit the window
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/feh-3.4.1/src/keyevents.c new/feh-3.5/src/keyevents.c
--- old/feh-3.4.1/src/keyevents.c       2020-05-29 23:55:03.000000000 +0200
+++ new/feh-3.5/src/keyevents.c 2020-08-29 08:50:28.000000000 +0200
@@ -710,6 +710,8 @@
        }
        else if (feh_is_kp(EVENT_toggle_pause, state, keysym, button)) {
                slideshow_pause_toggle(winwid);
+               /* We need to re-render the image to update the info string 
immediately. */
+               winwidget_render_image(winwid, 0, 0);
        }
        else if (feh_is_kp(EVENT_save_image, state, keysym, button)) {
                slideshow_save_image(winwid);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/feh-3.4.1/src/options.c new/feh-3.5/src/options.c
--- old/feh-3.4.1/src/options.c 2020-05-29 23:55:03.000000000 +0200
+++ new/feh-3.5/src/options.c   2020-08-29 08:50:28.000000000 +0200
@@ -943,8 +943,8 @@
                "stat64 "
 #endif
 
-#ifdef HAVE_VERSCMP
-               "verscmp "
+#ifdef HAVE_STRVERSCMP
+         "verscmp "
 #endif
 
 #ifdef HAVE_LIBXINERAMA
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/feh-3.4.1/src/slideshow.c new/feh-3.5/src/slideshow.c
--- old/feh-3.4.1/src/slideshow.c       2020-05-29 23:55:03.000000000 +0200
+++ new/feh-3.5/src/slideshow.c 2020-08-29 08:50:28.000000000 +0200
@@ -135,47 +135,54 @@
 
        winwidget w = (winwidget) data;
 
-       /* save the current filename for refinding it in new list */
-       current_filename = estrdup(FEH_FILE(current_file->data)->filename);
-
-       for (l = filelist; l; l = l->next) {
-               feh_file_free(l->data);
-               l->data = NULL;
-       }
-       gib_list_free_and_data(filelist);
-       filelist = NULL;
-       filelist_len = 0;
-       current_file = NULL;
-
-       /* rebuild filelist from original_file_items */
-       if (gib_list_length(original_file_items) > 0)
-               for (l = gib_list_last(original_file_items); l; l = l->prev)
-                       add_file_to_filelist_recursively(l->data, 
FILELIST_FIRST);
-       else if (!opt.filelistfile && !opt.bgmode)
-               add_file_to_filelist_recursively(".", FILELIST_FIRST);
+       /*
+        * multi-window mode has no concept of a "current file" and
+        * dynamically adding/removing windows is not implemented at the moment.
+        * So don't reload filelists in multi-window mode.
+        */
+       if (current_file != NULL) {
+               /* save the current filename for refinding it in new list */
+               current_filename = 
estrdup(FEH_FILE(current_file->data)->filename);
+
+               for (l = filelist; l; l = l->next) {
+                       feh_file_free(l->data);
+                       l->data = NULL;
+               }
+               gib_list_free_and_data(filelist);
+               filelist = NULL;
+               filelist_len = 0;
+               current_file = NULL;
+
+               /* rebuild filelist from original_file_items */
+               if (gib_list_length(original_file_items) > 0)
+                       for (l = gib_list_last(original_file_items); l; l = 
l->prev)
+                               add_file_to_filelist_recursively(l->data, 
FILELIST_FIRST);
+               else if (!opt.filelistfile && !opt.bgmode)
+                       add_file_to_filelist_recursively(".", FILELIST_FIRST);
 
-       if (opt.filelistfile) {
-               filelist = gib_list_cat(filelist, 
feh_read_filelist(opt.filelistfile));
-       }
-       
-       if (!(filelist_len = gib_list_length(filelist))) {
-               eprintf("No files found to reload.");
-       }
+               if (opt.filelistfile) {
+                       filelist = gib_list_cat(filelist, 
feh_read_filelist(opt.filelistfile));
+               }
+               
+               if (!(filelist_len = gib_list_length(filelist))) {
+                       eprintf("No files found to reload.");
+               }
 
-       feh_prepare_filelist();
+               feh_prepare_filelist();
 
-       /* find the previously current file */
-       for (l = filelist; l; l = l->next)
-               if (strcmp(FEH_FILE(l->data)->filename, current_filename) == 0) 
{
-                       current_file = l;
-                       break;
-               }
+               /* find the previously current file */
+               for (l = filelist; l; l = l->next)
+                       if (strcmp(FEH_FILE(l->data)->filename, 
current_filename) == 0) {
+                               current_file = l;
+                               break;
+                       }
 
-       free(current_filename);
+               free(current_filename);
 
-       if (!current_file)
-               current_file = filelist;
-       w->file = current_file;
+               if (!current_file)
+                       current_file = filelist;
+               w->file = current_file;
+       }
 
        feh_reload_image(w, 1, 0);
        feh_add_unique_timer(cb_reload_timer, w, opt.reload);
@@ -397,6 +404,14 @@
                if ((*c == '%') && (*(c+1) != '\0')) {
                        c++;
                        switch (*c) {
+                       case 'a':
+                               if (opt.paused == 1) {
+                                  strncat(ret, "paused", sizeof(ret) - 
strlen(ret) - 1);
+                               }
+                               else {
+                                  strncat(ret, "playing", sizeof(ret) - 
strlen(ret) - 1);
+                               }
+                               break;
                        case 'f':
                                if (file)
                                        strncat(ret, file->filename, 
sizeof(ret) - strlen(ret) - 1);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/feh-3.4.1/src/strverscmp.c 
new/feh-3.5/src/strverscmp.c
--- old/feh-3.4.1/src/strverscmp.c      1970-01-01 01:00:00.000000000 +0100
+++ new/feh-3.5/src/strverscmp.c        2020-08-29 08:50:28.000000000 +0200
@@ -0,0 +1,57 @@
+/*
+ * Copyright © 2005-2020 Rich Felker, et al.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#define _GNU_SOURCE
+#include <ctype.h>
+#include <string.h>
+
+int strverscmp(const char *l0, const char *r0)
+{
+       const unsigned char *l = (const void *)l0;
+       const unsigned char *r = (const void *)r0;
+       size_t i, dp, j;
+       int z = 1;
+
+       /* Find maximal matching prefix and track its maximal digit
+        * suffix and whether those digits are all zeros. */
+       for (dp=i=0; l[i]==r[i]; i++) {
+               int c = l[i];
+               if (!c) return 0;
+               if (!isdigit(c)) dp=i+1, z=1;
+               else if (c!='0') z=0;
+       }
+
+       if (l[dp]!='0' && r[dp]!='0') {
+               /* If we're not looking at a digit sequence that began
+                * with a zero, longest digit string is greater. */
+               for (j=i; isdigit(l[j]); j++)
+                       if (!isdigit(r[j])) return 1;
+               if (isdigit(r[j])) return -1;
+       } else if (z && dp<i && (isdigit(l[i]) || isdigit(r[i]))) {
+               /* Otherwise, if common prefix of digit sequence is
+                * all zeros, digits order less than non-digits. */
+               return (unsigned char)(l[i]-'0') - (unsigned char)(r[i]-'0');
+       }
+
+       return l[i] - r[i];
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/feh-3.4.1/src/timers.c new/feh-3.5/src/timers.c
--- old/feh-3.4.1/src/timers.c  2020-05-29 23:55:03.000000000 +0200
+++ new/feh-3.5/src/timers.c    2020-08-29 08:50:28.000000000 +0200
@@ -58,7 +58,37 @@
        return((double) timev.tv_sec + (((double) timev.tv_usec) / 1000000));
 }
 
-void feh_remove_timer(char *name)
+void feh_remove_timer_by_data(void *data)
+{
+       fehtimer ft, ptr, pptr;
+
+       D(("removing timer for %p\n", data));
+       pptr = NULL;
+       ptr = first_timer;
+       while (ptr) {
+               D(("Stepping through event list\n"));
+               ft = ptr;
+               if (ft->data == data) {
+                       D(("Found it. Removing\n"));
+                       if (pptr)
+                               pptr->next = ft->next;
+                       else
+                               first_timer = ft->next;
+                       if (ft->next)
+                               ft->next->in += ft->in;
+                       if (ft->name)
+                               free(ft->name);
+                       if (ft)
+                               free(ft);
+                       return;
+               }
+               pptr = ptr;
+               ptr = ptr->next;
+       }
+       return;
+}
+
+static void feh_remove_timer(char *name)
 {
        fehtimer ft, ptr, pptr;
 
@@ -88,6 +118,7 @@
        return;
 }
 
+
 void feh_add_timer(void (*func) (void *data), void *data, double in, char 
*name)
 {
        fehtimer ft, ptr, pptr;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/feh-3.4.1/src/timers.h new/feh-3.5/src/timers.h
--- old/feh-3.4.1/src/timers.h  2020-05-29 23:55:03.000000000 +0200
+++ new/feh-3.5/src/timers.h    2020-08-29 08:50:28.000000000 +0200
@@ -37,7 +37,7 @@
 
 void feh_handle_timer(void);
 double feh_get_time(void);
-void feh_remove_timer(char *name);
+void feh_remove_timer_by_data(void *data);
 void feh_add_timer(void (*func) (void *data), void *data, double in, char 
*name);
 void feh_add_unique_timer(void (*func) (void *data), void *data, double in);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/feh-3.4.1/src/winwidget.c new/feh-3.5/src/winwidget.c
--- old/feh-3.4.1/src/winwidget.c       2020-05-29 23:55:03.000000000 +0200
+++ new/feh-3.5/src/winwidget.c 2020-08-29 08:50:28.000000000 +0200
@@ -29,6 +29,7 @@
 #include "winwidget.h"
 #include "options.h"
 #include "events.h"
+#include "timers.h"
 
 #ifdef HAVE_INOTIFY
 #include <sys/inotify.h>
@@ -673,6 +674,9 @@
 #ifdef HAVE_INOTIFY
     winwidget_inotify_remove(winwid);
 #endif
+       if (opt.reload > 0 && opt.multiwindow) {
+               feh_remove_timer_by_data(winwid);
+       }
        winwidget_destroy_xwin(winwid);
        if (winwid->name)
                free(winwid->name);


Reply via email to