bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#55422: Emacs not starting due to gsettings changes.


From: Po Lu
Subject: bug#55422: Emacs not starting due to gsettings changes.
Date: Sun, 15 May 2022 14:49:27 +0800
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.91 (gnu/linux)

Pankaj Jangid <pankaj@codeisgreat.org> writes:

> Here is the error message. And attached is the stacktrace.

Does this fix the problem?

diff --git a/src/xsettings.c b/src/xsettings.c
index 16625bd229..ba75ea5703 100644
--- a/src/xsettings.c
+++ b/src/xsettings.c
@@ -230,6 +230,29 @@ #define GSETTINGS_FONT_HINTING       "font-hinting"
 /* The cairo font_options as obtained using gsettings.  */
 static cairo_font_options_t *font_options;
 
+static bool
+xg_settings_key_valid_p (GSettings *settings, const char *key)
+{
+#ifdef GLIB_VERSION_2_32
+  GSettingsSchema *schema;
+  bool rc;
+
+  g_object_get (G_OBJECT (settings),
+               "settings-schema", &schema,
+               NULL);
+
+  if (!schema)
+    return false;
+
+  rc = g_settings_schema_has_key (schema, key);
+  g_settings_schema_unref (schema);
+
+  return rc;
+#else
+  return false;
+#endif
+}
+
 /* Store an event for re-rendering of the fonts.  */
 static void
 store_font_options_changed (void)
@@ -243,13 +266,21 @@ store_font_options_changed (void)
 static void
 apply_gsettings_font_hinting (GSettings *settings)
 {
-  GVariant *val = g_settings_get_value (settings, GSETTINGS_FONT_HINTING);
+  GVariant *val;
+  const char *hinting;
+
+  if (!xg_settings_key_valid_p (settings, GSETTINGS_FONT_HINTING))
+    return;
+
+  val = g_settings_get_value (settings, GSETTINGS_FONT_HINTING);
+
   if (val)
     {
       g_variant_ref_sink (val);
+
       if (g_variant_is_of_type (val, G_VARIANT_TYPE_STRING))
        {
-         const char *hinting = g_variant_get_string (val, NULL);
+         hinting = g_variant_get_string (val, NULL);
 
          if (!strcmp (hinting, "full"))
            cairo_font_options_set_hint_style (font_options,
@@ -268,29 +299,6 @@ apply_gsettings_font_hinting (GSettings *settings)
     }
 }
 
-static bool
-xg_settings_key_valid_p (GSettings *settings, const char *key)
-{
-#ifdef GLIB_VERSION_2_32
-  GSettingsSchema *schema;
-  bool rc;
-
-  g_object_get (G_OBJECT (settings),
-               "settings-schema", &schema,
-               NULL);
-
-  if (!schema)
-    return false;
-
-  rc = g_settings_schema_has_key (schema, key);
-  g_settings_schema_unref (schema);
-
-  return rc;
-#else
-  return false;
-#endif
-}
-
 /* Apply changes in the antialiasing system setting.  */
 static void
 apply_gsettings_font_antialias (GSettings *settings)




reply via email to

[Prev in Thread] Current Thread [Next in Thread]