Age | Commit message (Collapse) | Author |
|
Before this commit, the code in src/wl_window.c seemed to handle the Wayland
scaling [1] correctly, it was sending resize events to imv to update the buffer
size accordingly. One thing it didn't update is the scaling of fonts that Pango
renders on Cairo.
This commit simply forwards the scaling factor (computed as [1] requests)
together with updated buffer dimentions in resize event, and when the resize
event is handled it calls cairo_surface_set_device_scale to notify Pango/Cairo
of the scaling.
For X11, I simply assume the scaline factor is always 1. This seems to be what
the old code did: `grep scale src/x11_window.c` gives no matches. AFAIK, X11
does not have an established way of telling clients what scaling factor to use
(and never updates it at runtime).
[1]: https://wayland-book.com/surfaces-in-depth/hidpi.html
|
|
Fixes #301
|
|
|
|
This issue was spotted on musl, where killing imv with the Q shortcut
while it was waiting for image paths in stdin led to the application
hanging until stdin received an EOF manually with ^D, since the stdin
stream was locked by the fgets() function.
Switching to pipes and a helper thread allows us to use read() for
reading from STDIN_FILENO while still taking advantage of the fgets()
logic for handling newlines and buffer size. read() is a thread
cancellation point (fgets() is only an optional one), which makes it
possible to cancel the helper thread cleanly and force the thread using
fgets() to exit when the write-end of the pipe it's reading from is
closed.
|
|
Since this isn't essential functionality, it's ok to simply not provide
it. In cases where XDG_RUNTIME_DIR was empty (but not unset) or set to a
directory where the user didn't have write permissions, socket creation
would fail and lead to segmentation faults in imv, due to the return
value of imv_ipc_create() not being checked.
|
|
Add newline to the prompt for reading paths from stdin.
Since string formatting isn't being used, it's possible to use fputs()
directly in the logging callback in imv.c.
|
|
|
|
split color_rgba into color_rgb and alpha
added configuration options to man pages
cleanup gitignore: the man pages output is now in the build directory,
so there is no to ignore man pages individually
|
|
* first steps for colored overlay
* overlay color wip
* add option for overlay position
if overlay_positiion_bottom is true overlay is at the bottom
* remove enum for overlay position
|
|
|
|
|
|
Rotation can be done by any amount (not limited to multiples of 90).
Commands allow flipping horizontally and vertically.
The flips are done relative to the current rotation.
|
|
|
|
|
|
|
|
|
|
|
|
Added a method that scales and crop the image so that the image will
fill the whole window.
Also made viewport update respect the current scaling mode.
|
|
|
|
This works the same way as the existing scale command except that it
changes the upscaling method.
Also did some code reduction on the scaling command.
|
|
This is required as key repeating is going to need to be handled
locally on Wayland, which means a slight refactor.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
I noticed that echoing `$imv_slideshow_duration` always came up
blank. Turns out, it's misspelled in imv.c. Correcting the spelling
mistake makes it behave as expected.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|