X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;f=libdocument%2Fev-backends-manager.c;h=de8be24cbf96c6ef5f3fa04c3b70ffe30b077aa7;hb=0b6b3dff626d31a368ef9a95f8ed73b404eec9bf;hp=87f7fea414ae489d1e6222612beb5d32b2fabc3e;hpb=b490fff8a6c6ab7bb23cc0f274e3150e7ab4471d;p=evince.git diff --git a/libdocument/ev-backends-manager.c b/libdocument/ev-backends-manager.c index 87f7fea4..de8be24c 100644 --- a/libdocument/ev-backends-manager.c +++ b/libdocument/ev-backends-manager.c @@ -30,6 +30,7 @@ typedef struct _EvBackendInfo EvBackendInfo; struct _EvBackendInfo { gchar *module_name; GTypeModule *module; + gboolean resident; GType type_id; @@ -78,6 +79,9 @@ ev_backends_manager_load_backend (const gchar *file) return NULL; } + info->resident = g_key_file_get_boolean (backend_file, EV_BACKENDS_GROUP, + "Resident", NULL); + info->type_desc = g_key_file_get_locale_string (backend_file, EV_BACKENDS_GROUP, "TypeDescription", NULL, NULL); if (!info->type_desc) { @@ -114,7 +118,7 @@ ev_backends_manager_load (void) dir = g_dir_open (EV_BACKENDSDIR, 0, &error); if (!dir) { - g_warning (error->message); + g_warning ("%s", error->message); g_error_free (error); return FALSE; @@ -139,20 +143,32 @@ ev_backends_manager_load (void) g_dir_close (dir); - return TRUE; + return ev_backends_list != NULL; } +/* + * _ev_backends_manager_init: + * + * Initializes the evince backends manager. + * + * Returns: %TRUE if there were any backends found; %FALSE otherwise + */ gboolean -ev_backends_manager_init (void) +_ev_backends_manager_init (void) { if (ev_backends_list) - return FALSE; + return TRUE; return ev_backends_manager_load (); } +/* + * _ev_backends_manager_shutdown: + * + * Shuts the evince backends manager down. + */ void -ev_backends_manager_shutdown (void) +_ev_backends_manager_shutdown (void) { g_list_foreach (ev_backends_list, (GFunc)ev_backend_info_free, NULL); g_list_free (ev_backends_list); @@ -194,7 +210,7 @@ ev_backends_manager_get_document (const gchar *mime_type) gchar *path; path = g_module_build_path (EV_BACKENDSDIR, info->module_name); - info->module = G_TYPE_MODULE (ev_module_new (path)); + info->module = G_TYPE_MODULE (ev_module_new (path, info->resident)); g_free (path); }