X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;f=libdocument%2Fev-document.c;h=aa7d1d2e70ff362ed38ebaff0de0d5d96d2009d0;hb=8108f28c648da47151a9f4f6cd3646fdd223841d;hp=7bb86be93db6b54e9fd515d05dd9161d7fb3679a;hpb=ae482b5ca216978f0fdc1e5b89e9709c3ff8b06b;p=evince.git diff --git a/libdocument/ev-document.c b/libdocument/ev-document.c index 7bb86be9..aa7d1d2e 100644 --- a/libdocument/ev-document.c +++ b/libdocument/ev-document.c @@ -22,36 +22,10 @@ #include "ev-document.h" -#include "ev-backend-marshalers.h" - -static void ev_document_class_init (gpointer g_class); - - GMutex *ev_doc_mutex = NULL; GMutex *ev_fc_mutex = NULL; -GType -ev_document_get_type (void) -{ - static GType type = 0; - - if (G_UNLIKELY (type == 0)) - { - const GTypeInfo our_info = - { - sizeof (EvDocumentIface), - NULL, - NULL, - (GClassInitFunc)ev_document_class_init - }; - - type = g_type_register_static (G_TYPE_INTERFACE, - "EvDocument", - &our_info, (GTypeFlags)0); - } - - return type; -} +EV_DEFINE_INTERFACE (EvDocument, ev_document, G_TYPE_OBJECT) GQuark ev_document_error_quark (void) @@ -64,7 +38,7 @@ ev_document_error_quark (void) } static void -ev_document_class_init (gpointer g_class) +ev_document_class_init (EvDocumentIface *klass) { } @@ -89,6 +63,12 @@ ev_document_doc_mutex_unlock (void) g_mutex_unlock (ev_document_get_doc_mutex ()); } +gboolean +ev_document_doc_mutex_trylock (void) +{ + return g_mutex_trylock (ev_document_get_doc_mutex ()); +} + GMutex * ev_document_get_fc_mutex (void) { @@ -110,6 +90,12 @@ ev_document_fc_mutex_unlock (void) g_mutex_unlock (ev_document_get_fc_mutex ()); } +gboolean +ev_document_fc_mutex_trylock (void) +{ + return g_mutex_trylock (ev_document_get_fc_mutex ()); +} + gboolean ev_document_load (EvDocument *document, const char *uri, @@ -231,6 +217,39 @@ ev_document_render (EvDocument *document, return retval; } +/* EvDocumentInfo */ +EV_DEFINE_BOXED_TYPE (EvDocumentInfo, ev_document_info, ev_document_info_copy, ev_document_info_free) + +EvDocumentInfo * +ev_document_info_copy (EvDocumentInfo *info) +{ + EvDocumentInfo *copy; + + g_return_val_if_fail (info != NULL, NULL); + + copy = g_new0 (EvDocumentInfo, 1); + copy->title = info->title ? g_strdup (info->title) : NULL; + copy->format = info->format ? g_strdup (info->format) : NULL; + copy->author = info->author ? g_strdup (info->author) : NULL; + copy->subject = info->subject ? g_strdup (info->subject) : NULL; + copy->keywords = info->keywords ? g_strdup (info->keywords) : NULL; + copy->security = info->security ? g_strdup (info->security) : NULL; + copy->creator = info->creator ? g_strdup (info->creator) : NULL; + copy->producer = info->producer ? g_strdup (info->producer) : NULL; + copy->linearized = info->linearized ? g_strdup (info->linearized) : NULL; + + copy->creation_date = info->creation_date; + copy->modified_date = info->modified_date; + copy->layout = info->layout; + copy->mode = info->mode; + copy->ui_hints = info->ui_hints; + copy->permissions = info->permissions; + copy->n_pages = info->n_pages; + copy->fields_mask = info->fields_mask; + + return copy; +} + void ev_document_info_free (EvDocumentInfo *info) {