When displaying on a simpledrm kms device the physical dimensions
of the screen are unknown. Use the heuristics from ply_get_device_scale ()
to guess the device scale to avoid rendering things too small
on 4K screens.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Add a check to see if the driver used is simpledrm,
this is a preparation patch for adding support to set
device_scale based on heuristics when using simpledrm.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Initialize rotation local variable to fix the following
false positive compiler warning:
src/plugins/renderers/drm/plugin.c: In function ‘get_primary_plane_rotation’:
src/plugins/renderers/drm/plugin.c:485:31: warning: ‘rotation’ may be used uninitialized [-Wmaybe-uninitialized]
485 | *rotation_ret = rotation;
| ~~~~~~~~~~~~~~^~~~~~~~~~
src/plugins/renderers/drm/plugin.c:419:18: note: ‘rotation’ was declared here
419 | uint64_t rotation;
| ^~~~~~~~
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Add a ply_guess_device_scale () helper for getting device-scale
when the physical dimensions of the output are not available.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
The two-step renderer uses ply_renderer_get_panel_properties() to get
the device-scale used for the builtin panel, assuming this is most likely
light-up by the firmware on boot and that this is thus also displaying
the bgrt boot splash shown by the firmware at boot.
It needs to know the device-scale for this output so that if hi-dpi
(device-scale=2) rendering is used on the output it can also set
device-scale=2 on the ply_pixel_buffer() used for the bgrt background
so that the pixel-buffer code knows the splash is pre-scaled and
doesn't double it in size making it twice as big as original.
ATM this doubling in size of the splash is exactly what happens
when using a desktop with a hidpi monitor because the drm plugin
does not provide any "panel" properties in this case.
To avoid this fall-back to using the properties of the first
enumerated (connected) output for get_panel_properties().
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
setlocale () does not work when there is no locale info for
the selected LANG / LC_MESSAGES. But it does cache the set
LANG / LC_MESSAGES and on subsequent setlocale () calls with
the same LANG / LC_MESSAGES it does not recheck for the locale info.
Thus if the initrd does not have translations then the setlocale ()
call should be delayed to after the chroot so that e.g.
the "Installing Updates..." text, which only is shown after
the chroot, gets translated properly.
So far we have been checking the /usr/share/locale dir exists,
but it is possible that some initrd generators may create
that without the necessary locale info being available.
Instead check for the NL plymouth.mo file, assuming that
if that is available we have all the necessary locale info.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
After the meson conversion ENABLE_NLS and PACKAGE are no longer
defined.
The meson i18n module should ensure that dgettext() is always available,
so simply always use it to fix the translations not working.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
After the conversion to meson to following CFLAGS were passed:
-DPLYMOUTH_LOCALE_DIRECTORY="share/locale"
-DPLYMOUTH_DRM_ESCROW_DIRECTORY="libexec/plymouth"
Note the missing "/usr/" prefix.
Fix these so that the locale check and drm-escrow binary work
again.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Allows Plymouth Script-based themes to query the Capslock state
directly to act on it by showing an icon or message.
Takes in Ray's suggestions and base the implemention around the keyboard
type instead, delegating to the renderer/terminal renderer types instead.
- Fix script plugin to handle monitor hotplug events
- Expose Plymouth.SetDisplayHotplugFunction to set script callback
after display hotplug
fixes#186
The node pointer is reused in the if (data->full_refresh) block
causing the following sprite list walking to fail. Fix this by
moving the sprite list first node getting next to the while loop
where it belongs.
Currently translated at 100.0% (7 of 7 strings)
Added translation using Weblate (Occidental)
Co-authored-by: Olga Smirnova <mistresssilvara@hotmail.com>
Translate-URL: https://translate.fedoraproject.org/projects/plymouth/master/ie/
Translation: plymouth/main
meson apparently has some built-in support for libdl, which
depending on libc implementations may or may not be in a separate
library from libc.
This commit changes meson.build to do things the "better" way.
When a lock modifier is pressed, plymouth goes through some gymnastics
to ensure the LEDs on all attached keyboards are appropriately updated.
Unfortunately, an optimization in the code used to avoid redundant
updates of keyboards that already have the correct state is actually
preventing the initiating keyboard from getting its LEDs turned on.
This is because the initiating keyboard gets its state updated at
key press time before the LED handling code runs, thus making it
seem like that run is redundant.
This commit introduces a new state variable `leds_state_invalid`
on the input device to mark this situation and updates the optimization
check to also check the new variable.
Some contributions by Ray Strode.
It seems like specifying -rdynamic in meson cflags doesn't work
on some systems, but meson has a built in way of doing the same
thing:
export_dynamic: true
This commit switches over to the probably more right way of
achieving a working dlopen(NULL).
Commit 7fcfcdf2d63025151a160f7948ee7406f0f16843 tried to fall back to
reading from a tty if no xkb layout was specified, but neglected to
actually check if no xkb layout was specified and force fall back to
reading from a tty in that case.
This commit changes device manager to actually disable reading from
/dev/input if the user doesn't specify a layout to use in vconsole.conf.
Closes https://gitlab.freedesktop.org/plymouth/plymouth/-/issues/199