X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;ds=inline;f=libdocument%2Fev-document.c;h=aa7d1d2e70ff362ed38ebaff0de0d5d96d2009d0;hb=8108f28c648da47151a9f4f6cd3646fdd223841d;hp=5e582d0aae3c9cfa8a3f5b10df4a73c5f7e2c604;hpb=b8aebf2e1ba5b4f9ff1e1256b28acb3e23947c51;p=evince.git diff --git a/libdocument/ev-document.c b/libdocument/ev-document.c index 5e582d0a..aa7d1d2e 100644 --- a/libdocument/ev-document.c +++ b/libdocument/ev-document.c @@ -22,37 +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; -#define LOG(x) -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) @@ -65,7 +38,7 @@ ev_document_error_quark (void) } static void -ev_document_class_init (gpointer g_class) +ev_document_class_init (EvDocumentIface *klass) { } @@ -90,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) { @@ -111,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, @@ -118,7 +103,7 @@ ev_document_load (EvDocument *document, { EvDocumentIface *iface = EV_DOCUMENT_GET_IFACE (document); gboolean retval; - LOG ("ev_document_load"); + retval = iface->load (document, uri, error); return retval; @@ -132,7 +117,6 @@ ev_document_save (EvDocument *document, EvDocumentIface *iface = EV_DOCUMENT_GET_IFACE (document); gboolean retval; - LOG ("ev_document_save"); retval = iface->save (document, uri, error); return retval; @@ -144,7 +128,6 @@ ev_document_get_n_pages (EvDocument *document) EvDocumentIface *iface = EV_DOCUMENT_GET_IFACE (document); gint retval; - LOG ("ev_document_get_n_pages"); retval = iface->get_n_pages (document); return retval; @@ -173,7 +156,6 @@ ev_document_get_page_size (EvDocument *document, { EvDocumentIface *iface = EV_DOCUMENT_GET_IFACE (document); - LOG ("ev_document_get_page_size"); iface->get_page_size (document, page, width, height); } @@ -183,7 +165,6 @@ ev_document_get_page_label (EvDocument *document, { EvDocumentIface *iface = EV_DOCUMENT_GET_IFACE (document); - LOG ("ev_document_get_page_label"); if (iface->get_page_label == NULL) return NULL; @@ -215,7 +196,6 @@ ev_document_get_attachments (EvDocument *document) EvDocumentIface *iface = EV_DOCUMENT_GET_IFACE (document); GList *retval; - LOG ("ev_document_get_attachments"); if (iface->get_attachments == NULL) return NULL; retval = iface->get_attachments (document); @@ -230,7 +210,6 @@ ev_document_render (EvDocument *document, EvDocumentIface *iface = EV_DOCUMENT_GET_IFACE (document); cairo_surface_t *retval; - LOG ("ev_document_render_pixbuf"); g_assert (iface->render); retval = iface->render (document, rc); @@ -238,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) {