summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)AuthorLines
2020-12-05fix memory leak when using exif=1 and reloading an imageDaniel Friesel-6/+15
2020-12-05Fix memory leak in feh_draw_exifDaniel Friesel-0/+1
2020-12-05free accompanying EXIF data when freeing an imageDaniel Friesel-1/+21
This fixes two memory bugs that only manifest with exif=1 and long-running slideshows. * when feh loads an image, it writes exif data to file->ed. Previously, this data was never free'd, causing a memory leak on subsequent loads of the same file. * As file->ed is never free'd, the accumulated EXIF data consumes a significant amount of memory over time. with slideshow-delay = 10 and two days of runtime, feh may exceed 1 GB of memory usage. If the slideshow is so large that feh does not encounter the same image twice in this time, this is not detected as a memory leak, as each EXIF data chunk is referenced from the filelist. See <https://github.com/derf/feh/issues/553> for details. Closes #553
2020-11-30menu: Set flip/rotate menu title based on --editDaniel Friesel-1/+6
If --edit is set, it is indeed "Edit in Place". Otherwise, it changes the view, but not the image on the disk.
2020-11-30Merge branch 'menu' of https://github.com/Eelis/feh into Eelis-menuDaniel Friesel-0/+10
2020-11-30Check magic bytes before passing a file to Imlib2's loaderDaniel Friesel-3/+100
This works around a regression in Imlib2, which makes (un)loadable file detection quite slow when handling e.g. large video files. See <https://phab.enlightenment.org/T8739> and <https://github.com/derf/feh/issues/505> for details. Closes #505
2020-11-14Add menu entries for mirror and flip operationsEelis van der Weegen-0/+10
2020-08-28Fix segfault when closing a window in multi-window reload modeDaniel Friesel-2/+37
Issue: * start feh --multiwindow --reload 5 * close a window with "x" * wait up to 5 seconds * segfault The issue was caused by the closed window's reload timer still being active even after the winwidget was free'd.
2020-08-28Fix segmentation fault when combining --multiwindow and --reloadDaniel Friesel-36/+43
Introduced in 3fa39154f089a6fadc1a14eb6b206e2d2875be71
2020-06-17Merge pull request #500 from reiseb/masterDaniel Friesel-0/+11
add option 'a' to show play/paused information in slideshow mode
2020-06-17toggle_pause: Re-render the image instead of reloadingDaniel Friesel-2/+2
When the slideshow state is toggled, the info line needs to be redrawn as it may use the %a format specifier (which shows whether the slideshow is running or paused). feh_reload_image does this, but also resets all pan and zoom options and reloads the image from disk. winwidget_render_image only redraws info, caption and similar lines in this case, which is more efficient and does not incur unwanted side-effects.
2020-06-17re-add verscmp flag to --version outputDaniel Friesel-0/+4
2020-06-16change play/pause to playing/paused to improve UXreiseb-3/+3
2020-06-16fix indentation (all tabs)reiseb-8/+8
2020-06-16add option 'a' to show play/paused information in slideshow modereiseb-0/+11
2020-06-15Enable --version-sort on systems without strverscmp()Tim van der Molen-9/+65
The --version-sort option requires strverscmp(), but this is a glibc extension that does not exist on OpenBSD and other systems. To enable --version-sort on those systems, provide an internal implementation of strverscmp(). The implementation is from the musl C library and is MIT-licensed. The build process remains the same: the verscmp flag should be set to 1 only if strverscmp() is available in libc. If verscmp is 0, then the internal implementation is used.
2020-05-30Update zoom in / zom out keys in feh --helpDaniel Friesel-2/+2
2020-05-29Fix lossless rotate for Imlib2 ≥ 1.6Daniel Friesel-2/+4
Closes #532
2020-04-11update copyrightDaniel Friesel-24/+24
2020-04-11ensure cache != NULL before accessing itDaniel Friesel-1/+1
Closes #521
2020-04-11Handle file:/// URLs as local paths in --start-atDaniel Friesel-1/+10
2020-04-08Notify user when attempting to edit caption of a URLDaniel Friesel-1/+4
2020-04-08fix a memory leak when loading a non-native image more than onceDaniel Friesel-0/+12
feh_file_info_load is called even if file_info is already populated, so the original file_info struct is never freed. This results in a leak of ~44 Byte for each subsequenc image load
2020-04-05Use conversion cache for imlib2 and dcraw imagesDaniel Friesel-21/+37
2020-03-30bypass HTTP cache when reloading an imageDaniel Friesel-3/+16
2020-03-30move feh_reload_image to imlib.c (next to feh_load_image)Daniel Friesel-76/+76
2020-03-30Enable HTTP cache by defaultDaniel Friesel-2/+5
2020-03-30Enable re-using downloaded http cacheAwal Garg-2/+21
2020-03-29Merge branch 'start-at-supports-urls' of https://github.com/iglosiggio/feh ↵Daniel Friesel-1/+3
into iglosiggio-start-at-supports-urls
2020-03-26Quit curl cleanly even if libcurl is old.c99pedant-0/+6
Building feh 3.3 on CentOS 7 x86_64 warns `curl_quit_function` in `imlib.c` is unused: ``` cc -g -O2 -Wall -Wextra -pedantic -std=c11 -D_POSIX_C_SOURCE=200809L -D_XOPEN_SOURCE=700 -DHAVE_LIBCURL -DHAVE_VERSCMP -DHAVE_LIBXINERAMA -DHAVE_LIBEXIF -DPREFIX=\"/usr/local\" -DPACKAGE=\"feh\" -DVERSION=\"3.3\" -c -o imlib.o imlib.c imlib.c:545:12: warning: ‘curl_quit_function’ defined but not used [-Wunused-function] static int curl_quit_function(void *clientp, curl_off_t dltotal, curl_off_t dlnow, curl_off_t ultotal, curl_off_t ulnow) ^ ``` The `curl_quit_function` code was added in response to pull [#435](https://github.com/derf/feh/pull/435) In issue [#485](https://github.com/derf/feh/issues/485) a fellow CentOS 7 user had an error building feh because CentOS 7 is locked into an old version of libcurl. In the fix, a version guard was wrapped around the `curl_easy_setopt` call, but the rest of the code was unchanged. Since I don't want to maintain a local build of libcurl, I looked at the curl docs and noticed there is an older callback which serves the same purpose: https://curl.haxx.se/libcurl/c/CURLOPT_PROGRESSFUNCTION.html The difference between `PROGRESS` and `XFERINFO` is the callback's argument types, with `PROGRESS` using `double` and `XFERINFO` using `curl_off_t`: https://curl.haxx.se/libcurl/c/CURLOPT_XFERINFOFUNCTION.html The callback's return value logic and use of `CURLOPT_NOPROGRESS` is the same. For context, the latest libcurl RPM I'm getting from yum updates is `libcurl-7.29.0-54.el7_7.2.x86_64`. The "stable" versions of other distros may encounter similar issues. The CentOS 7 "End of Life" date is 2024-06-30 so you should hear the end of this by then, at least from us pesky CentOS users.
2020-01-23Ignore --start-at if the parameter is an URLIgnacio Losiggio-1/+3
2019-11-07Guard CURLOPT_XFERINFOFUNCTION usage with LIBCURL_VERSION_NUM checkDaniel Friesel-0/+2
Closes #485
2019-11-07Merge branch 'x11-properties' of https://github.com/Ferada/feh into ↵Daniel Friesel-1/+6
Ferada-x11-properties
2019-10-29events: guard against NULL returns from imlib callsBen Boeckel-17/+21
This can happen with images that have ridiculous dimensions.
2019-10-11Allow setting the X11 class hint as an option.Olof-Joachim Frahm-1/+6
2019-07-22Use --no-fehbg in .fehbg commandlineDaniel Friesel-1/+1
This ensures that X11 layout or other changes do not affect the .fehbg contents, which are meant to only be updated when a --bg-option is used manually. Closes #482
2019-07-12Check stat for error before setting permissions.Tobias Stoeckmann-3/+4
When setting wallpapers without --no-fehbg option, a ~/.fehbg file is created. This file is set to be an executable for later re-use. Calling stat() without checking the return value can lead to issues. If the call fails, then s.st_mode is undefined and excessive permissions could be set to .fehbg, at worst even setuid/setgid bits for a world writable file. While adjusting this, I changed the code to use fstat() and fchmod() to avoid a further -- but very unlikely -- issue: race condition in form of TOCTOU. If the file ~/.fehsetbg is replaced by a symlink right before the chmod call, then a different file would be set executable + the default mode of the (newly created) file. I don't expect this to be a real world issue but changed this part "while at it" anyway for more robust code and a good example on how to handle files. Signed-off-by: Tobias Stoeckmann <tobias@stoeckmann.org>
2019-07-08Merge branch 'geometry' of https://github.com/CrackedP0t/feh into ↵Daniel Friesel-1/+8
CrackedP0t-geometry
2019-07-08Fix lockup when receiving a signal and inotify is enabledDaniel Friesel-2/+2
That part slipped through while reviewing the PR...
2019-04-18inotify: Support files in current working directoryDaniel Friesel-0/+9
2019-04-18Gracefully handle inotify failuresDaniel Friesel-3/+4
2019-04-18print error string if an inotify operation failsDaniel Friesel-3/+3
2019-04-12Enable auto-reload by default (when compiled with inotify=1)Daniel Friesel-0/+6
2019-04-12Handle no-longer-valid files in inotify-based auto-reloadDaniel Friesel-2/+2
2019-04-12Merge branch 'master' of https://github.com/swillner/feh into swillner-masterDaniel Friesel-5/+154
2019-04-05Correctly round human-readable file sizeDaniel Friesel-3/+3
Closes #463
2019-04-01Merge remote-tracking branch 'original/master'Sven Willner-291/+238
2019-03-26Make SIGUSR1 / SIGUSR2 relaod the current image in single-file slideshowsDaniel Friesel-4/+9
2019-03-14Get geometry after mappingElaina Martineau-0/+2
2019-03-14Get actual geometry from Xlib after resizeElaina Martineau-1/+6