]> git.ipfire.org Git - thirdparty/plymouth.git/commitdiff
renderers: Do not assume all keyboards have LEDs
authorn3rdopolis <bluescreen_avenger@verizon.net>
Wed, 31 Jan 2024 13:38:38 +0000 (08:38 -0500)
committern3rdopolis <bluescreen_avenger@verizon.net>
Wed, 31 Jan 2024 13:38:38 +0000 (08:38 -0500)
This is an attempt to fix #245

src/plugins/renderers/drm/plugin.c
src/plugins/renderers/frame-buffer/plugin.c

index 54cfe87462d04dfd210485211ac0e26b6631e44e..2fbb6b857369583fb2ebac275c721473dd42f479 100644 (file)
@@ -1972,6 +1972,17 @@ get_panel_properties (ply_renderer_backend_t      *backend,
         return true;
 }
 
+static ply_input_device_t *
+get_any_input_device (ply_renderer_backend_t *backend)
+{
+        ply_list_node_t *node = ply_list_get_first_node (backend->input_source.input_devices);
+
+        if (node != NULL)
+                return ply_list_node_get_data (node);
+
+        return NULL;
+}
+
 static ply_input_device_t *
 get_any_input_device_with_leds (ply_renderer_backend_t *backend)
 {
@@ -1994,6 +2005,9 @@ get_capslock_state (ply_renderer_backend_t *backend)
 {
         if (using_input_device (&backend->input_source)) {
                 ply_input_device_t *dev = get_any_input_device_with_leds (backend);
+                if (!dev)
+                        return false;
+
                 return ply_input_device_get_capslock_state (dev);
         }
         if (!backend->terminal)
@@ -2006,8 +2020,12 @@ static const char *
 get_keymap (ply_renderer_backend_t *backend)
 {
         if (using_input_device (&backend->input_source)) {
-                ply_input_device_t *dev = get_any_input_device_with_leds (backend);
-                const char *keymap = ply_input_device_get_keymap (dev);
+                const char *keymap;
+                ply_input_device_t *dev = get_any_input_device (backend);
+                if (!dev)
+                        return NULL;
+
+                keymap = ply_input_device_get_keymap (dev);
                 if (keymap != NULL) {
                         return keymap;
                 }
index e57d0437eb575e43895f45d286cf45b925ab09e1..3d56116e4009fafe26bbcc0241ca785d2a96c12c 100644 (file)
@@ -821,6 +821,17 @@ close_input_source (ply_renderer_backend_t      *backend,
         backend->input_source_is_open = false;
 }
 
+static ply_input_device_t *
+get_any_input_device (ply_renderer_backend_t *backend)
+{
+        ply_list_node_t *node = ply_list_get_first_node (backend->input_source.input_devices);
+
+        if (node != NULL)
+                return ply_list_node_get_data (node);
+
+        return NULL;
+}
+
 static ply_input_device_t *
 get_any_input_device_with_leds (ply_renderer_backend_t *backend)
 {
@@ -843,6 +854,9 @@ get_capslock_state (ply_renderer_backend_t *backend)
 {
         if (using_input_device (&backend->input_source)) {
                 ply_input_device_t *dev = get_any_input_device_with_leds (backend);
+                if (!dev)
+                        return false;
+
                 return ply_input_device_get_capslock_state (dev);
         }
         if (!backend->terminal)
@@ -855,8 +869,12 @@ static const char *
 get_keymap (ply_renderer_backend_t *backend)
 {
         if (using_input_device (&backend->input_source)) {
-                ply_input_device_t *dev = get_any_input_device_with_leds (backend);
-                const char *keymap = ply_input_device_get_keymap (dev);
+                const char *keymap;
+                ply_input_device_t *dev = get_any_input_device (backend);
+                if (!dev)
+                        return NULL;
+
+                keymap = ply_input_device_get_keymap (dev);
                 if (keymap != NULL) {
                         return keymap;
                 }