From 522d2b9c2a71f477fdfa21d12dad6d7f3c6ebf6e Mon Sep 17 00:00:00 2001 From: =?utf8?q?Marek=20Ka=C5=A1=C3=ADk?= Date: Tue, 18 Nov 2008 23:55:00 +0000 Subject: [PATCH] Fixes crash on fast scrolling with simultaneous text selection. MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 2008-11-19 Marek Kašík * shell/ev-pixbuf-cache.c (new_selection_surface_needed), (ev_pixbuf_cache_get_selection_surface): Fixes crash on fast scrolling with simultaneous text selection. svn path=/trunk/; revision=3272 --- ChangeLog | 7 +++++++ shell/ev-pixbuf-cache.c | 11 +++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5b23292b..343dee7b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2008-11-19 Marek Kašík + + * shell/ev-pixbuf-cache.c (new_selection_surface_needed), + (ev_pixbuf_cache_get_selection_surface): + + Fixes crash on fast scrolling with simultaneous text selection. + 2008-11-19 Marek Kašík * shell/ev-pixbuf-cache.c (ev_pixbuf_cache_add_jobs_if_needed): diff --git a/shell/ev-pixbuf-cache.c b/shell/ev-pixbuf-cache.c index ffa03772..46976afe 100644 --- a/shell/ev-pixbuf-cache.c +++ b/shell/ev-pixbuf-cache.c @@ -856,7 +856,7 @@ new_selection_surface_needed (EvPixbufCache *pixbuf_cache, { EvPageCache *page_cache; - if (job_info->selection) { + if (job_info->selection && job_info->rc) { gint width, height; gint selection_width, selection_height; @@ -982,8 +982,15 @@ ev_pixbuf_cache_get_selection_surface (EvPixbufCache *pixbuf_cache, if (!job_info->points_set) return NULL; + /* Create new render context if needed (selection + fast scrolling) */ + if (job_info->rc == NULL) { + EvPage *ev_page; + ev_page = ev_document_get_page (pixbuf_cache->document, page); + job_info->rc = ev_render_context_new (ev_page, 0, scale); + g_object_unref (ev_page); + } + /* Update the rc */ - g_assert (job_info->rc); ev_render_context_set_scale (job_info->rc, scale); /* If we have a running job, we just return what we have under the -- 2.43.5