summaryrefslogtreecommitdiff
path: root/src/imlib.c
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-0/+7
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-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-05-29Fix lossless rotate for Imlib2 ≥ 1.6Daniel Friesel-2/+4
Closes #532
2020-04-11update copyrightDaniel Friesel-1/+1
2020-04-11ensure cache != NULL before accessing itDaniel Friesel-1/+1
Closes #521
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-17/+33
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-0/+76
2020-03-30Enable HTTP cache by defaultDaniel Friesel-0/+1
2020-03-30Enable re-using downloaded http cacheAwal Garg-2/+16
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.
2019-11-07Guard CURLOPT_XFERINFOFUNCTION usage with LIBCURL_VERSION_NUM checkDaniel Friesel-0/+2
Closes #485
2018-12-04Declare sig_exit as volatileDaniel Friesel-1/+1
sig_exit may be changed by a signal handler, so its value should always be read from RAM.
2018-11-29Handle SIGINT while doing libcurl transfersDaniel Friesel-1/+24
See also #435
2018-11-23Decrease libcurl timeout from indefinite to 30 minutesDaniel Friesel-0/+7
2018-11-04Fix segfault when editing an image without info structDaniel Friesel-4/+12
2018-11-04Disable in-place editing by defaultDaniel Friesel-1/+1
2018-11-04Merge branch 'no-inplace-edit' of https://github.com/ulteq/feh into ↵Daniel Friesel-0/+16
ulteq-no-inplace-edit
2018-10-04Add missing EXIF rotations.Olof-Joachim Frahm-1/+13
2018-08-22Add an option to disable inplace editulteq-0/+16
2018-08-05Merge --dcraw-timeout and --magick-timeout into --conversion-timeoutDaniel Friesel-5/+5
2018-08-05Merge branch 'dcraw' of https://github.com/ulteq/feh into ulteq-dcrawDaniel Friesel-8/+102
2018-05-11Update copyright noticeDaniel Friesel-1/+1
2018-05-11Use custom temporary directory for ImageMagick calls and clean it up afterwardsDaniel Friesel-1/+50
2018-03-10Only set random seed onceDaniel Friesel-3/+0
Fixes non-random behaviour when randomizing file lists several times per second. Closes #349
2018-03-03Utilize dcraw to preview RAW filesulteq-8/+102
Uses the camera-generated thumbnail to display RAW images that could otherwise not be loaded.
2018-02-14Only check image dimensions on the fly in multiwindow and slideshow modeDaniel Friesel-0/+12
This introduces a new feh_should_ignore_image function which is called at appropriate places in those modes to skip images which are loadable but undesired.
2018-01-20Fix the --magick-timeout handlingulteq-19/+6
* Prevents nasty loading loops * Prevents zombie subprocesses * Fixes the conversion timeout detection routine
2017-12-28Always check file modification time before loading images from cacheDaniel Friesel-0/+10
2017-12-28Add option to change the imlib cache sizeulteq-0/+2
This option allows you to change the default imlib2 image cache size of 4 MiB.
2017-11-07Only set CURLOPT_CAINFO if CURL_CA_BUNDLE is setDaniel Friesel-1/+1
2017-11-07Fix ~/.fehbg no longer being source-able (closes #342)2.22.1Daniel Friesel-1/+1
2017-10-30imlib: Look up CA certificates by $CURL_CA_BUNDLE.Marius Bakke-0/+4
Similar to the `curl` command-line tool.
2017-09-26Fix dead codeNiclas Zeising-3/+4
The check if buffer == NULL is always false, since buffer is an autoamtic variable allocated when entering the function. What we instead want to do is to check if the string is empty after the call to exif_get_info(), since that means we could not read any exif information. When the code once more is enabled, I discovered that we need to copy the information string into info_buf as well as into buffer, since it is the former that is used to print the exif information on top of the picture. Without this change, imlib warns about trying to write NULL strings.
2017-09-26Remove unused variableNiclas Zeising-4/+0
2017-09-05Work around ImageMagick bug when converting to file descriptors (#323)Daniel Friesel-4/+12
2017-08-25Silence warningsorbea-1/+1
2017-08-05Show ImageMagick output on the terminal unless --quiet is specifiedDaniel Friesel-3/+5
(cf #309)
2016-10-30imlib.c: Move orientation logic inside HAVE_LIBEXIFDaniel Friesel-2/+2
2016-10-29add cmdline opt --auto-rotate to rotate according to EXIF infoElliot Wolk-1/+1
2016-10-29imlib: fix autorotate EXIF parsingElliot Wolk-12/+15
2016-07-24support rotation for images loaded via libcurl and imagemagickDaniel Friesel-29/+29
2016-07-22I may have fixed rotate etc. on remote images (not magick ones, though)Daniel Friesel-3/+20
2016-06-24Also handle fork() failure in magick_load_imageDaniel Friesel-1/+7
2016-06-23imlib/rotate: Fail gracefully when fork() failsDaniel Friesel-3/+3
2016-06-20imlib.c: Do not call atexit hooks when terminating a child process (closes #245)Daniel Friesel-5/+5
2016-05-03feh_draw_filename: Set correct list number in multiwindow mode (closes #237)Daniel Friesel-2/+6