]> www.fi.muni.cz Git - evince.git/blobdiff - shell/ev-jobs.c
Don't crash on reload. Fix for the bug #343167.
[evince.git] / shell / ev-jobs.c
index 9ee598ac4aae5f83f938a182e6a35b7a607b2436..e9f29eb681949ede515e4cf9688bfd1a64d80716 100644 (file)
@@ -271,7 +271,7 @@ ev_job_render_run (EvJobRender *job)
                                  G_CALLBACK (render_finished_cb), job);
        } else {
                job->pixbuf = ev_document_render_pixbuf (EV_JOB (job)->document, job->rc);
-               if (job->include_links && EV_IS_LINK (EV_JOB (job)->document))
+               if (job->include_links && EV_IS_DOCUMENT_LINKS (EV_JOB (job)->document))
                        job->link_mapping =
                                ev_document_links_get_links (EV_DOCUMENT_LINKS (EV_JOB (job)->document),
                                                             job->rc->page);
@@ -389,6 +389,11 @@ ev_job_xfer_dispose (GObject *object)
                job->error = NULL;
        }
 
+       if (job->dest) {
+               g_object_unref (job->dest);
+               job->dest = NULL;
+       }
+
        (* G_OBJECT_CLASS (ev_job_xfer_parent_class)->dispose) (object);
 }
 
@@ -404,13 +409,15 @@ ev_job_xfer_class_init (EvJobXferClass *class)
 
 
 EvJob *
-ev_job_xfer_new (const gchar *uri)
+ev_job_xfer_new (const gchar *uri, EvLinkDest *dest)
 {
        EvJobXfer *job;
 
        job = g_object_new (EV_TYPE_JOB_XFER, NULL);
 
        job->uri = g_strdup (uri);
+       if (dest)
+               job->dest = g_object_ref (dest);
 
        return EV_JOB (job);
 }
@@ -433,9 +440,13 @@ ev_job_xfer_run (EvJobXfer *job)
                char *tmp_name;
                char *base_name;
                
+               /* We'd like to keep extension of source uri since
+                * it helps to resolve some mime types, say cbz */
+               
                tmp_name = ev_tmp_filename ();
-               base_name = g_path_get_basename (job->uri);
-               job->local_uri = g_strconcat ("file:", tmp_name, base_name, NULL);
+               base_name = gnome_vfs_uri_extract_short_name (source_uri);
+               job->local_uri = g_strconcat ("file:", tmp_name, "-", base_name, NULL);
+               g_free (base_name);
                g_free (tmp_name);
                
                target_uri = gnome_vfs_uri_new (job->local_uri);