[gtk+] Don't use qdata for getting the default css style



commit 9fac83783c873e44507b085c6fac3f348d277c25
Author: Matthias Clasen <mclasen redhat com>
Date:   Fri May 6 07:54:22 2016 -0400

    Don't use qdata for getting the default css style
    
    There's no point in using qdata for looking this up, since
    we only ever set it on the default screen anyway.

 gtk/gtkcssstaticstyle.c |   44 ++++++++++++++++++++++++++------------------
 1 files changed, 26 insertions(+), 18 deletions(-)
---
diff --git a/gtk/gtkcssstaticstyle.c b/gtk/gtkcssstaticstyle.c
index fa60414..1d49402 100644
--- a/gtk/gtkcssstaticstyle.c
+++ b/gtk/gtkcssstaticstyle.c
@@ -140,27 +140,35 @@ gtk_css_static_style_set_value (GtkCssStaticStyle *style,
     }
 }
 
+static GtkCssStyle *default_style;
+
+static void
+clear_default_style (gpointer data)
+{
+  g_set_object (&default_style, NULL);
+}
+
 GtkCssStyle *
 gtk_css_static_style_get_default (void)
 {
-  static GQuark style_quark = 0;
-  GtkSettings *settings;
-  GtkCssStyle *result;
-
-  if (style_quark == 0)
-    style_quark = g_quark_from_static_string ("gtk-default-style");
-
-  settings = gtk_settings_get_for_screen (gdk_screen_get_default ());
-  result = g_object_get_qdata (G_OBJECT (settings), style_quark);
-  if (result)
-    return result;
-
-  result = gtk_css_static_style_new_compute (GTK_STYLE_PROVIDER_PRIVATE (settings),
-                                             NULL,
-                                             NULL);
-  g_object_set_qdata_full (G_OBJECT (settings), style_quark, result, g_object_unref);
+  /* FIXME: This really depends on the screen, but we don't have
+   * a screen at hand when we call this function, and in practice,
+   * the default style is always replaced by something else
+   * before we use it.
+   */
+  if (default_style == NULL)
+    {
+      GtkSettings *settings;
+
+      settings = gtk_settings_get_default ();
+      default_style = gtk_css_static_style_new_compute (GTK_STYLE_PROVIDER_PRIVATE (settings),
+                                                        NULL,
+                                                        NULL);
+      g_object_set_data_full (G_OBJECT (settings), "gtk-default-style",
+                              default_style, clear_default_style);
+    }
 
-  return result;
+  return default_style;
 }
 
 GtkCssStyle *
@@ -184,7 +192,7 @@ gtk_css_static_style_new_compute (GtkStyleProviderPrivate *provider,
 
   result->change = change;
 
-  _gtk_css_lookup_resolve (lookup, 
+  _gtk_css_lookup_resolve (lookup,
                            provider,
                            result,
                            parent);


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