aboutsummaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2016-10-23Simplify hex color parserDmitrij D. Czarkoff
It is actually a trivial task for strtoul + some bit shifting, so there is no need for two separate functions.
2016-10-21Fix leak of images awaiting collection in loaderHarry Jeffery
2016-10-21Rework thread resource leakHarry Jeffery
2016-10-20Cap playback delta-time to 100 msHarry Jeffery
This prevents imv from trying to "catch up" on the time that it was asleep for by playing the gif back at high speed.
2016-10-09Be more correct in read_from_stdin()Dmitrij D. Czarkoff
From read(2) manual page on OpenBSD: Error checks should explicitly test for -1. Code such as while ((nr = read(fd, buf, sizeof(buf))) > 0) is not maximally portable, as some platforms allow for nbytes to range between SSIZE_MAX and SIZE_MAX - 2, in which case the return value of an error-free read() may appear as a negative number distinct from -1. Proper loops should use while ((nr = read(fd, buf, sizeof(buf))) != -1 && nr != 0) Distingushing between error and eof would also help for debugging.
2016-09-28Fix thread resource leak in loaderHarry Jeffery
2016-09-27Fix minor memory leak in load_font()Harry Jeffery
2016-09-27Fix GetWidth/GetHeight typo in main.cHarry Jeffery
2016-05-13Fix build of imv on GNU libcDmitrij D. Czarkoff
Previously imv used -std=gnu11 flag which activated GNU "extensions" of C11 standard. This masked a portability issue in imv: strduo(3) should not have been visible in `src/loader.c` without inclusion of `<string.h>` header. This have been fixed. To remidy GNU libc's stange choice to hide X/Open interfaces in C99 code by default _XOPEN_SOURCE macro was also set. (This should have no effect on most other platforms.)
2016-05-01Make imv_navigator_add() return an integer valueDmitrij D. Czarkoff
In case of error return non-zero value instead of cleaning up navigator. This way main loop may do some more cleanup, or maybe even act differently.
2016-05-01Remove buf_size from struct imv_navigatorDmitrij D. Czarkoff
Implementation details should not leak to other parts of the code. While at it, clean up initialization and destruction of navigator.
2016-04-29Fix uninitialized use of "last_time"Dmitrij D. Czarkoff
Set "last_time" to current time at declaration time, so that it holds at least something by the time it is used.
2016-04-29Remember files' modification times, not their directories'Dmitrij D. Czarkoff
2016-04-29Use single buffer for title and overlayDmitrij D. Czarkoff
This allows to drop extra printing steps and memory allocations.
2016-04-26Reimplement '-x' flagDmitrij D. Czarkoff
This change effectively backs out f1737ddd06141afbe99f37af3b5c2d0f1df5fe7a, implementing the same functionality in a simpler and more correct way. Implementation details: * imv_navigator.wrapped - a new field that has value "0" by default; once navigator wraps around the list, this field recieves value "1". * imv_navigator_wrapped(&nav) - a new function that returns non-zero value iff navigator wrapped around the list. Currently just returns value of imv_navigator.wrapped. While at it, expanded "test_navigator_remove" and merged it with "test_navigator_add". Resulting test is called "test_navigator_add_remove". Fixes #94.
2016-04-26Fix segmentation violationDmitrij D. Czarkoff
When non-cycling mode prevents navigator from wrapping to the other end of list, undo change to nav->cur_path. Otherwise it will remain out-of-bounds, so that subsequent calls to navigator functions may produce unexpected results, up to segmentation violation. Fixes #93
2016-04-26Fix reporting image changeDmitrij D. Czarkoff
Apparently bg_next_frame() functions marked first frames of gifs old before imv_loader_get_image() had a chance to report them to the main loop. Move unsetting of ldr->out_is_new_image to imv_loader_get_image(). Fixes #81.
2016-04-26Indent fixDmitrij D. Czarkoff
2016-04-26Add vim modelinesDmitrij D. Czarkoff
2016-04-26Conditionally ignore key repeatDmitrij D. Czarkoff
For the following actions: * reset scaling ('s'), * redraw ('r'), * scale to actual size ('a'), * center image ('c'), * remove selection ('x'), * toggle fullscreen ('f'), * toggle playing (space), * print selection ('p'), * toggle overlay ('d') repeating action when key is held does not make sense. After acting upon these events ignore them until key is released or another key is pressed.
2016-04-25Make '+' work on all layoutsDmitrij D. Czarkoff
Key handling code obuses the fact that plus sign is shifted key for equals sign on US keyboard. Add '+' as a control for layouts where this is not the case.
2016-04-22fixed comment typo in loader.hShanaXXII
2016-04-02Add -x switch to exit imv when reaching end of file list.Hannes Koerber
2016-03-06Read file list from standard input continuoslyDmitrij D. Czarkoff
This reduces delay before initial draw in case of slow input, opening possibilities for use cases like: $ curl -Osw "%{filename_effective}\n" "http://www.example.com/[1-10].jpg" which will download all images and start showing them once first arrives.
2016-02-21Honour EXIF orientation tagDmitrij D. Czarkoff
2016-02-08Remove tabsHarry Jeffery
2016-02-08Fix #78Harry Jeffery
If the gif disposal method is unspecified, default to compositing instead of full disposal.
2016-01-24Fix bug in slideshow timingHarry Jeffery
2016-01-17Fix memory leak in imv_navigator_destroyHarry Jeffery
2016-01-16Add third scaling mode: best fitDmitrij D. Czarkoff
* Add new switches: "-S" to force (default) "perfect fit" mode and "-s" to force "best fit" mode. * Add new control key: "s" to switch scaling mode.
2016-01-16Provide some feedback to users when no arguments are givenHarry Jeffery
2016-01-16Trim usage information for -hHarry Jeffery
2016-01-14Loading image data from standard inputDmitrij D. Czarkoff
This commit changes processing of arguments: * When called without arguments (with or without flags), imv reads list of files from standard input. * When called with "-" among arguments, read image data from standard input.
2016-01-13Use PATH_MAX for buffers holding pathsDmitrij D. Czarkoff
2016-01-13Sort static functionsDmitrij D. Czarkoff
2016-01-13Declare static functions above all codeDmitrij D. Czarkoff
2016-01-13Remove "imv_loader_" prefix from static functionsDmitrij D. Czarkoff
2016-01-13In 'void *' functions return NULL instead of 0Dmitrij D. Czarkoff
2016-01-13Fix strict build on GCCHarry Jeffery
2016-01-01Include <limits.h>Dmitrij D. Czarkoff
2015-12-30Reduce amount of stat(2) callsDmitrij D. Czarkoff
Add 8-bit variable that is passed to imv_navigator_poll_changed(). Decrement it on each run of main loop. When it gets to 0, call stat(2).
2015-12-30Allow fractional slideshow timeoutDmitrij D. Czarkoff
Accept slideshow timeout expressed as fractional numbers. It is intentionally lax, so that arguments like ".1" or "5." are accepted and give no surprises.
2015-12-28Hide functions that are not exposed via headersDmitrij D. Czarkoff
2015-12-28Remove names from file copyright headersHarry Jeffery
2015-12-28Add checks for malloc(3)Dmitrij D. Czarkoff
Exit(3) if memory allocation fails.
2015-12-28Use stat(2) to monitor file changesDmitrij D. Czarkoff
Makes file monitoring in imv completely POSIX.
2015-12-28Use realloc(3) for extending bufferDmitrij D. Czarkoff
It may save some CPU cycles if there is enough space to grow the array without copying memory chunks. Two side effects of the change: proper error checking added and dangerous memcpy(3) call removed.
2015-12-26Improve readability of g_optionsHarry Jeffery
The default options block was getting quite ridiculous to try and read. Let's improve the readability.
2015-12-26Merge pull request #62 from czarkoff/fontHarry Jeffery
Use default font
2015-12-25Document default font change in help textDmitrij D. Czarkoff