Blob Blame History Raw
From a9f9f9b36a03535480b31534547bea7c9f7cf4c1 Mon Sep 17 00:00:00 2001
From: Christian Hergert <chergert@redhat.com>
Date: Sun, 23 Feb 2020 17:27:08 -0800
Subject: [PATCH 1/3] clutter: avoid redundant _clutter_paint_node_init_types()

This only needs to be initialized once but is in the hot path of creating
new paint nodes (for which we create many). Instead, do this as part of
the clutter_init() workflow to keep it out of the hot path.

https://gitlab.gnome.org/GNOME/mutter/merge_requests/1087
---
 clutter/clutter/clutter-main.c       | 4 ++++
 clutter/clutter/clutter-paint-node.c | 2 --
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/clutter/clutter/clutter-main.c b/clutter/clutter/clutter-main.c
index 46537f322..8a465fdc2 100644
--- a/clutter/clutter/clutter-main.c
+++ b/clutter/clutter/clutter-main.c
@@ -63,6 +63,7 @@
 #include "clutter-main.h"
 #include "clutter-master-clock.h"
 #include "clutter-mutter.h"
+#include "clutter-paint-node-private.h"
 #include "clutter-private.h"
 #include "clutter-settings-private.h"
 #include "clutter-stage-manager.h"
@@ -1390,6 +1391,9 @@ clutter_init_real (GError **error)
   if (clutter_enable_accessibility)
     cally_accessibility_init ();
 
+  /* Initialize types required for paint nodes */
+  _clutter_paint_node_init_types ();
+
   return CLUTTER_INIT_SUCCESS;
 }
 
diff --git a/clutter/clutter/clutter-paint-node.c b/clutter/clutter/clutter-paint-node.c
index 391f48398..db68b7766 100644
--- a/clutter/clutter/clutter-paint-node.c
+++ b/clutter/clutter/clutter-paint-node.c
@@ -1113,8 +1113,6 @@ _clutter_paint_node_create (GType gtype)
 {
   g_return_val_if_fail (g_type_is_a (gtype, CLUTTER_TYPE_PAINT_NODE), NULL);
 
-  _clutter_paint_node_init_types ();
-
   return (gpointer) g_type_create_instance (gtype);
 }
 
-- 
2.26.0