mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-11-17 23:10:22 +00:00
Make loading of theming engines from modules work
This commit is contained in:
parent
d0f681e898
commit
35a41bd801
@ -154,8 +154,11 @@ typedef struct GtkThemingModuleClass GtkThemingModuleClass;
|
||||
struct GtkThemingModule
|
||||
{
|
||||
GTypeModule parent_instance;
|
||||
GModule *module;
|
||||
gchar *name;
|
||||
|
||||
void (*init) (GTypeModule *module);
|
||||
void (*exit) (void);
|
||||
GtkThemingEngine * (*create_engine) (void);
|
||||
};
|
||||
|
||||
@ -622,26 +625,50 @@ gtk_theming_module_load (GTypeModule *type_module)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (!g_module_symbol (module, "create_engine",
|
||||
if (!g_module_symbol (module, "theme_init",
|
||||
(gpointer *) &theming_module->init) ||
|
||||
!g_module_symbol (module, "theme_exit",
|
||||
(gpointer *) &theming_module->exit) ||
|
||||
!g_module_symbol (module, "create_engine",
|
||||
(gpointer *) &theming_module->create_engine))
|
||||
{
|
||||
g_warning ("%s", g_module_error());
|
||||
g_warning ("%s", g_module_error ());
|
||||
g_module_close (module);
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
g_module_make_resident (module);
|
||||
theming_module->module = module;
|
||||
|
||||
theming_module->init (theming_module);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static void
|
||||
gtk_theming_module_unload (GTypeModule *type_module)
|
||||
{
|
||||
GtkThemingModule *theming_module;
|
||||
|
||||
theming_module = GTK_THEMING_MODULE (type_module);
|
||||
|
||||
theming_module->exit ();
|
||||
|
||||
g_module_close (theming_module->module);
|
||||
|
||||
theming_module->module = NULL;
|
||||
theming_module->init = NULL;
|
||||
theming_module->exit = NULL;
|
||||
theming_module->create_engine = NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
gtk_theming_module_class_init (GtkThemingModuleClass *klass)
|
||||
{
|
||||
GTypeModuleClass *module_class = G_TYPE_MODULE_CLASS (klass);
|
||||
|
||||
module_class->load = gtk_theming_module_load;
|
||||
module_class->unload = gtk_theming_module_unload;
|
||||
}
|
||||
|
||||
static void
|
||||
|
Loading…
Reference in New Issue
Block a user