Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/shell/ev-pixbuf-cache.c
diff options
context:
space:
mode:
authorNickolay V. Shmyrev <nshmyrev@yandex.ru>2006-08-27 20:06:18 (GMT)
committer Nickolay V. Shmyrev <nshmyrev@src.gnome.org>2006-08-27 20:06:18 (GMT)
commit9b0445a3b8162f7d36c7407d77d7d410d45ac6e3 (patch)
tree165e7279dc8a1bf2b86eb0aada426ca0eb5f7d33 /shell/ev-pixbuf-cache.c
parent8b94e956e4ffa2db3fccccd9ee24ce571d24b95f (diff)
Don't clear link mapping on copy_job_to_job_info. Fixes bug 346168.
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.
Diffstat (limited to 'shell/ev-pixbuf-cache.c')
-rw-r--r--shell/ev-pixbuf-cache.c56
1 files changed, 42 insertions, 14 deletions
diff --git a/shell/ev-pixbuf-cache.c b/shell/ev-pixbuf-cache.c
index fff1249..1d0c528 100644
--- a/shell/ev-pixbuf-cache.c
+++ b/shell/ev-pixbuf-cache.c
@@ -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)
{