]> rtime.felk.cvut.cz Git - sojka/lightdm.git/commitdiff
don't call xkl_config_rec_get_from_server if we don't have a valid xkl_engine.
authorCharles Kerr <charles.kerr@canonical.com>
Sat, 15 Mar 2014 16:49:16 +0000 (11:49 -0500)
committerCharles Kerr <charles.kerr@canonical.com>
Sat, 15 Mar 2014 16:49:16 +0000 (11:49 -0500)
liblightdm-gobject/layout.c

index eb2b8544d3e8188c2747d0a0b4e3655c8fcb54d2..6d0ab19a352e93cd138a5821e2c4d1f3e3ce9c17 100644 (file)
@@ -109,23 +109,30 @@ layout_cb (XklConfigRegistry *config,
 GList *
 lightdm_get_layouts (void)
 {
-    XklConfigRegistry *registry;
-
     if (have_layouts)
         return layouts;
 
     display = XOpenDisplay (NULL);
     xkl_engine = xkl_engine_get_instance (display);
-    xkl_config = xkl_config_rec_new ();
-    if (!xkl_config_rec_get_from_server (xkl_config, xkl_engine))
-        g_warning ("Failed to get Xkl configuration from server");
+    if (xkl_engine == NULL)
+    {
+        g_warning ("Failed to get Xkl engine for display '%p'", display);
+    }
+    else
+    {
+        XklConfigRegistry *registry;
+
+        xkl_config = xkl_config_rec_new ();
+        if (!xkl_config_rec_get_from_server (xkl_config, xkl_engine))
+            g_warning ("Failed to get Xkl configuration from server");
 
-    registry = xkl_config_registry_get_instance (xkl_engine);
-    xkl_config_registry_load (registry, FALSE);
-    xkl_config_registry_foreach_layout (registry, layout_cb, NULL);
-    g_object_unref (registry);
+        registry = xkl_config_registry_get_instance (xkl_engine);
+        xkl_config_registry_load (registry, FALSE);
+        xkl_config_registry_foreach_layout (registry, layout_cb, NULL);
+        g_object_unref (registry);
 
-    have_layouts = TRUE;
+        have_layouts = TRUE;
+    }
 
     return layouts;
 }