Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/libdocument/ev-module.c
diff options
context:
space:
mode:
authorCarlos Garcia Campos <carlosgc@gnome.org>2008-03-03 15:01:19 (GMT)
committer Carlos Garcia Campos <carlosgc@src.gnome.org>2008-03-03 15:01:19 (GMT)
commit6ee6a56490821f09bffbe17f3dde19da3a119dd8 (patch)
tree7a90695094f5909555b9a1c7439735daf4782a9f /libdocument/ev-module.c
parent0c06dc4d1656051c9613973e8bef9c7dbfaa151d (diff)
Allow making backend modules resident. This is needed only for some
2008-03-03 Carlos Garcia Campos <carlosgc@gnome.org> * backend/pdf/pdfdocument.evince-backend.in: * libdocument/ev-backends-manager.c: (ev_backends_manager_load_backend), (ev_backends_manager_get_document): * libdocument/ev-module.[ch]: (ev_module_load), (ev_module_new): Allow making backend modules resident. This is needed only for some backends like pdf to avoid registering glib types more than once. svn path=/trunk/; revision=2943
Diffstat (limited to 'libdocument/ev-module.c')
-rw-r--r--libdocument/ev-module.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/libdocument/ev-module.c b/libdocument/ev-module.c
index f2aebe7..f9860a2 100644
--- a/libdocument/ev-module.c
+++ b/libdocument/ev-module.c
@@ -54,6 +54,7 @@ struct _EvModule {
GTypeModule parent_instance;
GModule *library;
+ gboolean resident;
gchar *path;
GType type;
@@ -106,6 +107,9 @@ ev_module_load (GTypeModule *gmodule)
return FALSE;
}
+ if (module->resident)
+ g_module_make_resident (module->library);
+
return TRUE;
}
@@ -175,7 +179,8 @@ ev_module_class_init (EvModuleClass *class)
}
EvModule *
-ev_module_new (const gchar *path)
+ev_module_new (const gchar *path,
+ gboolean resident)
{
EvModule *result;
@@ -185,6 +190,7 @@ ev_module_new (const gchar *path)
g_type_module_set_name (G_TYPE_MODULE (result), path);
result->path = g_strdup (path);
+ result->resident = resident;
return result;
}