void zathura_free(zathura_t* zathura) { if (zathura == NULL) { return; } document_close(zathura, false); if (zathura->ui.session != NULL) { girara_session_destroy(zathura->ui.session); } /* stdin support */ if (zathura->stdin_support.file != NULL) { g_unlink(zathura->stdin_support.file); g_free(zathura->stdin_support.file); } /* bookmarks */ girara_list_free(zathura->bookmarks.bookmarks); /* database */ if (zathura->database != NULL) { g_object_unref(G_OBJECT(zathura->database)); } /* free print settings */ if (zathura->print.settings != NULL) { g_object_unref(zathura->print.settings); } if (zathura->print.page_setup != NULL) { g_object_unref(zathura->print.page_setup); } /* free registered plugins */ zathura_plugin_manager_free(zathura->plugins.manager); /* free config variables */ g_free(zathura->config.config_dir); g_free(zathura->config.data_dir); /* free jumplist */ if (zathura->jumplist.list != NULL) { girara_list_free(zathura->jumplist.list); } if (zathura->jumplist.cur != NULL) { girara_list_iterator_free(zathura->jumplist.cur); } g_free(zathura); }
zathura_plugin_manager_t* zathura_plugin_manager_new() { zathura_plugin_manager_t* plugin_manager = g_malloc0(sizeof(zathura_plugin_manager_t)); plugin_manager->plugins = girara_list_new2((girara_free_function_t) zathura_plugin_free); plugin_manager->path = girara_list_new2(g_free); plugin_manager->type_plugin_mapping = girara_list_new2((girara_free_function_t)zathura_type_plugin_mapping_free); if (plugin_manager->plugins == NULL || plugin_manager->path == NULL || plugin_manager->type_plugin_mapping == NULL) { zathura_plugin_manager_free(plugin_manager); return NULL; } return plugin_manager; }
void zathura_free(zathura_t* zathura) { if (zathura == NULL) { return; } document_close(zathura, false); /* MIME type detection */ zathura_content_type_free(zathura->content_type_context); #ifdef G_OS_UNIX if (zathura->signals.sigterm > 0) { g_source_remove(zathura->signals.sigterm); zathura->signals.sigterm = 0; } #endif /* stop D-Bus */ if (zathura->dbus != NULL) { g_object_unref(zathura->dbus); zathura->dbus = NULL; } if (zathura->ui.session != NULL) { girara_session_destroy(zathura->ui.session); } /* shortcut */ if (zathura->shortcut.toggle_presentation_mode.first_page_column_list != NULL) { g_free(zathura->shortcut.toggle_presentation_mode.first_page_column_list); } /* stdin support */ if (zathura->stdin_support.file != NULL) { g_unlink(zathura->stdin_support.file); g_free(zathura->stdin_support.file); } /* bookmarks */ girara_list_free(zathura->bookmarks.bookmarks); /* database */ if (zathura->database != NULL) { g_object_unref(G_OBJECT(zathura->database)); } /* free print settings */ if (zathura->print.settings != NULL) { g_object_unref(zathura->print.settings); } if (zathura->print.page_setup != NULL) { g_object_unref(zathura->print.page_setup); } /* free registered plugins */ zathura_plugin_manager_free(zathura->plugins.manager); /* free config variables */ g_free(zathura->config.config_dir); g_free(zathura->config.data_dir); g_free(zathura->config.cache_dir); /* free jumplist */ if (zathura->jumplist.list != NULL) { girara_list_free(zathura->jumplist.list); } if (zathura->jumplist.cur != NULL) { girara_list_iterator_free(zathura->jumplist.cur); } g_free(zathura); }