X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;f=libview%2Fev-page-cache.c;h=c3c570417285e9303a294872c6f6ce4b25274770;hb=b0e729d2f6401c7cf6988aa044f47b3ca8e48487;hp=cdec16ca3a3fca05983371d5d54837fad75ea67f;hpb=9c542cbc19dadbef1a13bd29ff1dd0606d9f34b1;p=evince.git diff --git a/libview/ev-page-cache.c b/libview/ev-page-cache.c index cdec16ca..c3c57041 100644 --- a/libview/ev-page-cache.c +++ b/libview/ev-page-cache.c @@ -34,6 +34,7 @@ typedef struct _EvPageCacheData { EvJob *job; gboolean done : 1; + gboolean dirty : 1; EvJobPageDataFlags flags; EvMappingList *link_mapping; @@ -179,10 +180,10 @@ ev_page_cache_get_flags_for_data (EvPageCache *cache, { EvJobPageDataFlags flags = EV_PAGE_DATA_INCLUDE_NONE; - if (data->flags == cache->flags) + if (data->flags == cache->flags && !data->dirty) return cache->flags; - /* Flags changed */ + /* Flags changed or data is dirty */ if (cache->flags & EV_PAGE_DATA_INCLUDE_LINKS) { flags = (data->link_mapping) ? flags & ~EV_PAGE_DATA_INCLUDE_LINKS : @@ -270,6 +271,7 @@ job_page_data_finished_cb (EvJob *job, if (job_data->flags & EV_PAGE_DATA_INCLUDE_TEXT) data->text = job_data->text; data->done = TRUE; + data->dirty = FALSE; g_object_unref (data->job); data->job = NULL; @@ -300,7 +302,7 @@ ev_page_cache_set_page_range (EvPageCache *cache, EvPageCacheData *data = &cache->page_list[i]; EvJobPageDataFlags flags; - if (data->flags == cache->flags && (data->done || data->job)) + if (data->flags == cache->flags && !data->dirty && (data->done || data->job)) continue; if (data->job) @@ -339,6 +341,21 @@ ev_page_cache_set_flags (EvPageCache *cache, ev_page_cache_set_page_range (cache, cache->start_page, cache->end_page); } +void +ev_page_cache_mark_dirty (EvPageCache *cache, + gint page) +{ + EvPageCacheData *data; + + g_return_if_fail (EV_IS_PAGE_CACHE (cache)); + + data = &cache->page_list[page]; + data->dirty = TRUE; + + /* Update the current range */ + ev_page_cache_set_page_range (cache, cache->start_page, cache->end_page); +} + EvMappingList * ev_page_cache_get_link_mapping (EvPageCache *cache, gint page)