]> git.ipfire.org Git - thirdparty/plymouth.git/blobdiff - src/plugins/renderers/frame-buffer/plugin.c
renderers: Do not assume all keyboards have LEDs
[thirdparty/plymouth.git] / src / plugins / renderers / frame-buffer / plugin.c
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;
                 }