From c284fdd869066085c756f617ac6787abe06769c6 Mon Sep 17 00:00:00 2001 From: Carlos Garcia Campos Date: Fri, 15 Aug 2014 13:04:53 +0200 Subject: page-cache: Add flags parameter to ev_page_cache_mark_dirty() This allows to specify what is dirty so that it's freed before being cached again. origin commit: https://git.gnome.org/browse/evince/commit/?h=gnome-3-14&id=20c6b3b --- libview/ev-page-cache.c | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) (limited to 'libview/ev-page-cache.c') diff --git a/libview/ev-page-cache.c b/libview/ev-page-cache.c index a3a2b6fd..b7c5e8aa 100644 --- a/libview/ev-page-cache.c +++ b/libview/ev-page-cache.c @@ -342,8 +342,9 @@ ev_page_cache_set_flags (EvPageCache *cache, } void -ev_page_cache_mark_dirty (EvPageCache *cache, - gint page) +ev_page_cache_mark_dirty (EvPageCache *cache, + gint page, + EvJobPageDataFlags flags) { EvPageCacheData *data; @@ -352,6 +353,27 @@ ev_page_cache_mark_dirty (EvPageCache *cache, data = &cache->page_list[page]; data->dirty = TRUE; + if (flags & EV_PAGE_DATA_INCLUDE_LINKS) + g_clear_pointer (&data->link_mapping, ev_mapping_list_unref); + + if (flags & EV_PAGE_DATA_INCLUDE_IMAGES) + g_clear_pointer (&data->image_mapping, ev_mapping_list_unref); + + if (flags & EV_PAGE_DATA_INCLUDE_FORMS) + g_clear_pointer (&data->form_field_mapping, ev_mapping_list_unref); + + if (flags & EV_PAGE_DATA_INCLUDE_ANNOTS) + g_clear_pointer (&data->annot_mapping, ev_mapping_list_unref); + + if (flags & EV_PAGE_DATA_INCLUDE_TEXT_MAPPING) + g_clear_pointer (&data->text_mapping, cairo_region_destroy); + + if (flags & EV_PAGE_DATA_INCLUDE_TEXT) + g_clear_pointer (&data->text, g_free); + + if (flags & EV_PAGE_DATA_INCLUDE_TEXT_LAYOUT) + g_clear_pointer (&data->text_layout, g_free); + /* Update the current range */ ev_page_cache_set_page_range (cache, cache->start_page, cache->end_page); } -- cgit v1.2.1