[mutter/wip/chergert/less-type-init] clutter: avoid redundant _clutter_paint_node_init_types()



commit b23c4a1339b4b38694979a769df1ca82552c1ba9
Author: Christian Hergert <chergert redhat com>
Date:   Sun Feb 23 17:27:08 2020 -0800

    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 f306cd4a6..0114244b8 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"
@@ -970,6 +971,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 708ebf195..138a64652 100644
--- a/clutter/clutter/clutter-paint-node.c
+++ b/clutter/clutter/clutter-paint-node.c
@@ -1194,8 +1194,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);
 }
 


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