]> www.fi.muni.cz Git - evince.git/commitdiff
Don't clear link mapping on copy_job_to_job_info. Fixes bug 346168.
authorNickolay V. Shmyrev <nshmyrev@yandex.ru>
Sun, 27 Aug 2006 20:06:18 +0000 (20:06 +0000)
committerNickolay V. Shmyrev <nshmyrev@src.gnome.org>
Sun, 27 Aug 2006 20:06:18 +0000 (20:06 +0000)
2006-08-28  Nickolay V. Shmyrev  <nshmyrev@yandex.ru>

* shell/ev-pixbuf-cache.c: (copy_job_to_job_info):

Don't clear link mapping on copy_job_to_job_info. Fixes
bug 346168.

ChangeLog
shell/ev-pixbuf-cache.c

index e1235b1912de0614a130fe612e36144fee605233..98ab3e9725b8f043af55ed8bcd6f83019ac3cbd8 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2006-08-28  Nickolay V. Shmyrev  <nshmyrev@yandex.ru>
+
+       * shell/ev-pixbuf-cache.c: (copy_job_to_job_info):
+       
+       Don't clear link mapping on copy_job_to_job_info. Fixes
+       bug 346168.
+
 2006-08-21  Carlos Garcia Campos  <carlosgc@gnome.org>
 
        * shell/main.c: (main):
index fff12499a307c1ce6ac1c350c8e69c85b8c15599..1d0c528654ed51da163f9a33ddd6dcac39557c16 100644 (file)
@@ -396,33 +396,61 @@ copy_job_to_job_info (EvJobRender   *job_render,
                      CacheJobInfo  *job_info,
                      EvPixbufCache *pixbuf_cache)
 {
-       GdkPixbuf *pixbuf;
-       EvRenderContext *rc;
 
-       pixbuf = g_object_ref (job_render->pixbuf);
-       rc = g_object_ref (job_render->rc);
+       job_info->points_set = FALSE;
 
-       dispose_cache_job_info (job_info, pixbuf_cache);
+       if (job_info->pixbuf) {
+               g_object_unref (G_OBJECT (job_info->pixbuf));
+       }
+       job_info->pixbuf = g_object_ref (job_render->pixbuf);
 
-       job_info->pixbuf = pixbuf;
-       job_info->rc = rc;
-       
-       if (job_render->link_mapping)
+       if (job_info->rc) {
+               g_object_unref (G_OBJECT (job_info->rc));
+       }
+       job_info->rc = g_object_ref (job_render->rc);
+
+       if (job_render->include_links) {
+               if (job_info->link_mapping)
+                       ev_link_mapping_free (job_info->link_mapping);
                job_info->link_mapping = job_render->link_mapping;
-       if (job_render->text_mapping)
-               job_info->text_mapping = job_render->text_mapping;      
+       }
+
+       if (job_render->include_text) {
+               if (job_info->text_mapping)
+                       gdk_region_destroy (job_info->text_mapping);
+               job_info->text_mapping = job_render->text_mapping;
+       }
+       
 
        if (job_render->include_selection) {
-               pixbuf = g_object_ref (job_render->selection);
+
+               if (job_info->selection) {
+                       g_object_unref (G_OBJECT (job_info->selection));
+                       job_info->selection = NULL;
+               }
+               if (job_info->selection_region) {
+                       gdk_region_destroy (job_info->selection_region);
+                       job_info->selection_region = NULL;
+               }
+               
                job_info->selection_points = job_render->selection_points;
                job_info->selection_region = gdk_region_copy (job_render->selection_region);
-               job_info->selection = pixbuf;
+               job_info->selection = g_object_ref (job_render->selection);
                g_assert (job_info->selection_points.x1 >= 0);
        }
 
+       if (job_info->job) {
+               g_signal_handlers_disconnect_by_func (job_info->job,
+                                                     G_CALLBACK (job_finished_cb),
+                                                     pixbuf_cache);
+               ev_job_queue_remove_job (job_info->job);
+               g_object_unref (G_OBJECT (job_info->job));
+               job_info->job = NULL;
+       }
+
 }
 
-static CacheJobInfo *
+static CacheJobInfo*
 find_job_cache (EvPixbufCache *pixbuf_cache,
                int            page)
 {