+ const GTypeInfo theme_engine_info = {
+ sizeof (GtkThemeEngineClass),
+ NULL, /* base_init */
+ NULL, /* base_finalize */
+ (GClassInitFunc) gtk_theme_engine_class_init,
+ NULL, /* class_finalize */
+ NULL, /* class_data */
+ sizeof (GtkThemeEngine),
+ 0, /* n_preallocs */
+ NULL, /* instance_init */
+ };
+
+ theme_engine_type =
+ g_type_register_static (G_TYPE_TYPE_MODULE, I_("GtkThemeEngine"),
+ &theme_engine_info, 0);
+ }
+
+ return theme_engine_type;
+}
+
+GtkThemeEngine*
+gtk_theme_engine_get (const gchar *name)
+{
+ GtkThemeEngine *result;
+
+ if (!engine_hash)
+ engine_hash = g_hash_table_new (g_str_hash, g_str_equal);
+
+ /* get the library name for the theme
+ */
+ result = g_hash_table_lookup (engine_hash, name);
+
+ if (!result)
+ {
+ result = g_object_new (GTK_TYPE_THEME_ENGINE, NULL);
+ g_type_module_set_name (G_TYPE_MODULE (result), name);
+ result->name = g_strdup (name);
+
+ g_hash_table_insert (engine_hash, result->name, result);