]> www.fi.muni.cz Git - evince.git/blobdiff - libview/ev-pixbuf-cache.c
shell: Actually use the launch context
[evince.git] / libview / ev-pixbuf-cache.c
index 763ec047365d271698b62bc13ddeb325ce2d2779..df06705c51b2360e709e2373f53e14dc9498ee0a 100644 (file)
@@ -1,11 +1,11 @@
 #include <config.h>
 #include "ev-pixbuf-cache.h"
 #include "ev-job-scheduler.h"
-#include "ev-page-cache.h"
 #include "ev-mapping.h"
 #include "ev-document-forms.h"
 #include "ev-document-images.h"
 #include "ev-document-annotations.h"
+#include "ev-view-private.h"
 
 typedef struct _CacheJobInfo
 {
@@ -290,24 +290,21 @@ job_finished_cb (EvJob         *job,
  */
 static void
 check_job_size_and_unref (EvPixbufCache *pixbuf_cache,
-                         CacheJobInfo *job_info,
-                         EvPageCache  *page_cache,
-                         gfloat        scale)
+                         CacheJobInfo  *job_info,
+                         gfloat         scale)
 {
-       gint width;
-       gint height;
+       gint width, height;
 
        g_assert (job_info);
 
        if (job_info->job == NULL)
                return;
 
-       ev_page_cache_get_size (page_cache,
-                               EV_JOB_RENDER (job_info->job)->page,
-                               EV_JOB_RENDER (job_info->job)->rotation,
-                               scale,
-                               &width, &height);
-                               
+       _get_page_size_for_scale_and_rotation (job_info->job->document,
+                                              EV_JOB_RENDER (job_info->job)->page,
+                                              scale,
+                                              EV_JOB_RENDER (job_info->job)->rotation,
+                                              &width, &height);
        if (width == EV_JOB_RENDER (job_info->job)->target_width &&
            height == EV_JOB_RENDER (job_info->job)->target_height)
                return;
@@ -587,18 +584,15 @@ static void
 ev_pixbuf_cache_clear_job_sizes (EvPixbufCache *pixbuf_cache,
                                 gfloat         scale)
 {
-       EvPageCache *page_cache;
        int i;
 
-       page_cache = ev_page_cache_get (pixbuf_cache->document);
-
        for (i = 0; i < PAGE_CACHE_LEN (pixbuf_cache); i++) {
-               check_job_size_and_unref (pixbuf_cache, pixbuf_cache->job_list + i, page_cache, scale);
+               check_job_size_and_unref (pixbuf_cache, pixbuf_cache->job_list + i, scale);
        }
 
        for (i = 0; i < pixbuf_cache->preload_cache_size; i++) {
-               check_job_size_and_unref (pixbuf_cache, pixbuf_cache->prev_job + i, page_cache, scale);
-               check_job_size_and_unref (pixbuf_cache, pixbuf_cache->next_job + i, page_cache, scale);
+               check_job_size_and_unref (pixbuf_cache, pixbuf_cache->prev_job + i, scale);
+               check_job_size_and_unref (pixbuf_cache, pixbuf_cache->next_job + i, scale);
        }
 }
 
@@ -673,7 +667,6 @@ add_job (EvPixbufCache *pixbuf_cache,
 static void
 add_job_if_needed (EvPixbufCache *pixbuf_cache,
                   CacheJobInfo  *job_info,
-                  EvPageCache   *page_cache,
                   gint           page,
                   gint           rotation,
                   gfloat         scale,
@@ -684,8 +677,9 @@ add_job_if_needed (EvPixbufCache *pixbuf_cache,
        if (job_info->job)
                return;
 
-       ev_page_cache_get_size (page_cache, page, rotation,
-                               scale, &width, &height);
+       _get_page_size_for_scale_and_rotation (pixbuf_cache->document,
+                                              page, scale, rotation,
+                                              &width, &height);
 
        if (job_info->surface &&
            cairo_image_surface_get_width (job_info->surface) == width &&
@@ -702,19 +696,16 @@ ev_pixbuf_cache_add_jobs_if_needed (EvPixbufCache *pixbuf_cache,
                                    gint           rotation,
                                    gfloat         scale)
 {
-       EvPageCache *page_cache;
        CacheJobInfo *job_info;
        int page;
        int i;
 
-       page_cache = ev_page_cache_get (pixbuf_cache->document);
-
        for (i = 0; i < PAGE_CACHE_LEN (pixbuf_cache); i++) {
                job_info = (pixbuf_cache->job_list + i);
                page = pixbuf_cache->start_page + i;
 
                add_job_if_needed (pixbuf_cache, job_info,
-                                  page_cache, page, rotation, scale,
+                                  page, rotation, scale,
                                   EV_JOB_PRIORITY_URGENT);
        }
 
@@ -723,7 +714,7 @@ ev_pixbuf_cache_add_jobs_if_needed (EvPixbufCache *pixbuf_cache,
                page = pixbuf_cache->start_page - pixbuf_cache->preload_cache_size + i;
 
                add_job_if_needed (pixbuf_cache, job_info,
-                                  page_cache, page, rotation, scale,
+                                  page, rotation, scale,
                                   EV_JOB_PRIORITY_LOW);
        }
 
@@ -732,7 +723,7 @@ ev_pixbuf_cache_add_jobs_if_needed (EvPixbufCache *pixbuf_cache,
                page = pixbuf_cache->end_page + 1 + i;
 
                add_job_if_needed (pixbuf_cache, job_info,
-                                  page_cache, page, rotation, scale,
+                                  page, rotation, scale,
                                   EV_JOB_PRIORITY_LOW);
        }
 
@@ -882,16 +873,13 @@ new_selection_surface_needed (EvPixbufCache *pixbuf_cache,
                              gint           page,
                              gfloat         scale)
 {
-       EvPageCache *page_cache;
-
        if (job_info->selection && job_info->rc) {
                gint width, height;
                gint selection_width, selection_height;
-               
-               page_cache = ev_page_cache_get (pixbuf_cache->document);
-               ev_page_cache_get_size (page_cache, page,
-                                       job_info->rc->rotation,
-                                       scale, &width, &height);
+
+               _get_page_size_for_scale_and_rotation (pixbuf_cache->document,
+                                                      page, scale, job_info->rc->rotation,
+                                                      &width, &height);
 
                selection_width = cairo_image_surface_get_width (job_info->selection);
                selection_height = cairo_image_surface_get_height (job_info->selection);
@@ -1261,10 +1249,9 @@ ev_pixbuf_cache_reload_page (EvPixbufCache *pixbuf_cache,
        if (job_info == NULL)
                return;
 
-       ev_page_cache_get_size (ev_page_cache_get (pixbuf_cache->document),
-                               page, rotation, scale,
-                               &width, &height);
-
+       _get_page_size_for_scale_and_rotation (pixbuf_cache->document,
+                                              page, scale, rotation,
+                                              &width, &height);
         add_job (pixbuf_cache, job_info, region,
                 width, height, page, rotation, scale,
                 EV_JOB_PRIORITY_URGENT);