]> www.fi.muni.cz Git - evince.git/blobdiff - libdocument/ev-module.c
[dualscreen] fix crash on ctrl+w and fix control window closing
[evince.git] / libdocument / ev-module.c
index f2aebe702c9d3d5d934e9749f71a6c0adac35b6f..330da2ccd68ac93bc11fcd36fe7d848a64a7c8cb 100644 (file)
@@ -16,8 +16,8 @@
  *
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330
- * Boston, MA 02111-1307, USA. 
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor
+ * Boston, MA 02110-1301, USA.
  */
  
 /* This is a modified version of ephy-module.c from Epiphany source code.
@@ -54,6 +54,7 @@ struct _EvModule {
         GTypeModule parent_instance;
 
         GModule *library;
+       gboolean resident;
 
         gchar *path;
         GType type;
@@ -75,7 +76,7 @@ ev_module_load (GTypeModule *gmodule)
         module->library = g_module_open (module->path, 0);
 
         if (!module->library) {
-                g_warning (g_module_error ());
+                g_warning ("%s", g_module_error ());
 
                 return FALSE;
         }
@@ -83,7 +84,7 @@ ev_module_load (GTypeModule *gmodule)
         /* extract symbols from the lib */
         if (!g_module_symbol (module->library, "register_evince_backend",
                               (void *) &register_func)) {
-                g_warning (g_module_error ());
+                g_warning ("%s", g_module_error ());
                 g_module_close (module->library);
 
                 return FALSE;
@@ -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;
 }