summaryrefslogtreecommitdiffstats
path: root/src/cmd/page/cache.c
diff options
context:
space:
mode:
authorMathieu Lonjaret <mathieu.lonjaret@gmail.com>2010-02-04 02:05:03 -0800
committerRuss Cox <rsc@swtch.com>2010-02-04 02:05:03 -0800
commitd9e047e5d5560912da6d2860fa25e427322f08bb (patch)
tree27d21e7bffdb6520f996c1d71fb8af5bb0dbaabe /src/cmd/page/cache.c
parent2d6da3763ec643f353a1c48e2e7a2ed7c25046a7 (diff)
downloadplan9port-d9e047e5d5560912da6d2860fa25e427322f08bb.tar.gz
plan9port-d9e047e5d5560912da6d2860fa25e427322f08bb.zip
R=rsc
CC=codebot http://codereview.appspot.com/193069
Diffstat (limited to 'src/cmd/page/cache.c')
-rw-r--r--src/cmd/page/cache.c19
1 files changed, 18 insertions, 1 deletions
diff --git a/src/cmd/page/cache.c b/src/cmd/page/cache.c
index 87c2c25a..0063a339 100644
--- a/src/cmd/page/cache.c
+++ b/src/cmd/page/cache.c
@@ -17,6 +17,7 @@ struct Cached
int page;
int angle;
Image *im;
+ int ppi;
};
static Cached cache[5];
@@ -57,14 +58,28 @@ _cachedpage(Document *doc, int angle, int page, char *ra)
int i;
Cached *c, old;
Image *im, *tmp;
+ int ppi = 100;
+ PDFInfo *pdf;
+ PSInfo *ps;
if((page < 0 || page >= doc->npage) && !doc->fwdonly)
return nil;
+ if (doc->type == Tpdf){
+ pdf = (PDFInfo *) doc->extra;
+ ppi = pdf->gs.ppi;
+ }
+ else{
+ if (doc->type == Tps){
+ ps = (PSInfo *) doc->extra;
+ ppi = ps->gs.ppi;
+ }
+ }
+
Again:
for(i=0; i<nelem(cache); i++){
c = &cache[i];
- if(c->doc == doc && c->angle == angle && c->page == page){
+ if(c->doc == doc && c->angle == angle && c->page == page && c->ppi == ppi){
if(chatty) fprint(2, "cache%s hit %d\n", ra, page);
goto Found;
}
@@ -80,6 +95,7 @@ Again:
c->im = nil;
c->doc = nil;
c->page = -1;
+ c->ppi = -1;
if(chatty) fprint(2, "cache%s load %d\n", ra, page);
im = doc->drawpage(doc, page);
@@ -129,6 +145,7 @@ Again:
c->page = page;
c->angle = angle;
c->im = im;
+ c->ppi = ppi;
Found:
if(chatty) fprint(2, "cache%s mtf %d @%d:", ra, c->page, i);