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);