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
This commit is contained in:
Christian Hergert 2020-02-23 17:27:08 -08:00 committed by Georges Basile Stavracas Neto
parent 0c55e87d8f
commit d327cedb83
2 changed files with 4 additions and 2 deletions

View File

@ -63,6 +63,7 @@
#include "clutter-main.h" #include "clutter-main.h"
#include "clutter-master-clock.h" #include "clutter-master-clock.h"
#include "clutter-mutter.h" #include "clutter-mutter.h"
#include "clutter-paint-node-private.h"
#include "clutter-private.h" #include "clutter-private.h"
#include "clutter-settings-private.h" #include "clutter-settings-private.h"
#include "clutter-stage-manager.h" #include "clutter-stage-manager.h"
@ -970,6 +971,9 @@ clutter_init_real (GError **error)
if (clutter_enable_accessibility) if (clutter_enable_accessibility)
cally_accessibility_init (); cally_accessibility_init ();
/* Initialize types required for paint nodes */
_clutter_paint_node_init_types ();
return CLUTTER_INIT_SUCCESS; return CLUTTER_INIT_SUCCESS;
} }

View File

@ -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); 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); return (gpointer) g_type_create_instance (gtype);
} }