X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;ds=inline;f=dvi%2Fdvi-document.c;h=4de5e64eddc74457ccbcb405063abf2abd8f9cf9;hb=592bc46cb8c4d56dd04c39ac87d287a0abcf6fa6;hp=6ecbc3a29503d893ef98b3f3310033f4d576c136;hpb=0ecfeba326af04a2b9cd27776aa84827f1f638a7;p=evince.git diff --git a/dvi/dvi-document.c b/dvi/dvi-document.c index 6ecbc3a2..4de5e64e 100644 --- a/dvi/dvi-document.c +++ b/dvi/dvi-document.c @@ -29,10 +29,6 @@ #include #include -#include -#include -#include -#include GMutex *dvi_context_mutex = NULL; @@ -96,10 +92,12 @@ dvi_document_load (EvDocument *document, return FALSE; } + g_mutex_lock (dvi_context_mutex); if (dvi_document->context) mdvi_destroy_context (dvi_document->context); dvi_document->context = mdvi_init_context(dvi_document->params, dvi_document->spec, filename); + g_mutex_unlock (dvi_context_mutex); if (!dvi_document->context) { g_set_error (error, @@ -117,8 +115,6 @@ dvi_document_load (EvDocument *document, dvi_document->base_height = dvi_document->context->dvi_page_h * dvi_document->context->params.vconv + 2 * unit2pix(dvi_document->params->vdpi, MDVI_VMARGIN) / dvi_document->params->vshrink; - dvi_context_mutex = g_mutex_new (); - g_free (dvi_document->uri); dvi_document->uri = g_strdup (uri); @@ -132,32 +128,8 @@ dvi_document_save (EvDocument *document, GError **error) { DviDocument *dvi_document = DVI_DOCUMENT (document); - GnomeVFSResult result; - GnomeVFSURI *source_uri; - GnomeVFSURI *target_uri; - - if (!dvi_document->uri) - return FALSE; - - source_uri = gnome_vfs_uri_new (dvi_document->uri); - target_uri = gnome_vfs_uri_new (uri); - - result = gnome_vfs_xfer_uri (source_uri, target_uri, - GNOME_VFS_XFER_DEFAULT | GNOME_VFS_XFER_FOLLOW_LINKS, - GNOME_VFS_XFER_ERROR_MODE_ABORT, - GNOME_VFS_XFER_OVERWRITE_MODE_REPLACE, - NULL, - NULL); - gnome_vfs_uri_unref (target_uri); - gnome_vfs_uri_unref (source_uri); - - if (result != GNOME_VFS_OK) - g_set_error (error, - EV_DOCUMENT_ERROR, - 0, - gnome_vfs_result_to_string (result)); - return (result == GNOME_VFS_OK); - return TRUE; + + return ev_xfer_uri_simple (dvi_document->uri, uri, error); } static int @@ -234,12 +206,14 @@ static void dvi_document_finalize (GObject *object) { DviDocument *dvi_document = DVI_DOCUMENT(object); - + + g_mutex_lock (dvi_context_mutex); if (dvi_document->context) { mdvi_pixbuf_device_free (&dvi_document->context->device); mdvi_destroy_context (dvi_document->context); } + g_mutex_unlock (dvi_context_mutex); if (dvi_document->params) g_free (dvi_document->params); @@ -256,6 +230,11 @@ dvi_document_class_init (DviDocumentClass *klass) GObjectClass *gobject_class = G_OBJECT_CLASS (klass); gobject_class->finalize = dvi_document_finalize; + + mdvi_init_kpathsea("evince", MDVI_MFMODE, MDVI_FALLBACK_FONT, MDVI_DPI); + mdvi_register_fonts (); + + dvi_context_mutex = g_mutex_new (); } static gboolean @@ -387,10 +366,6 @@ dvi_document_init_params (DviDocument *dvi_document) dvi_document->params->bg = 0xffffffff; dvi_document->params->fg = 0xff000000; - - mdvi_init_kpathsea("evince", MDVI_MFMODE, MDVI_FALLBACK_FONT, MDVI_DPI); - - mdvi_register_fonts (); } static void