From 6ee6a56490821f09bffbe17f3dde19da3a119dd8 Mon Sep 17 00:00:00 2001 From: Carlos Garcia Campos Date: Mon, 03 Mar 2008 15:01:19 +0000 Subject: Allow making backend modules resident. This is needed only for some 2008-03-03 Carlos Garcia Campos * 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 --- (limited to 'libdocument/ev-module.c') 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; } -- cgit v0.9.1