From mboxrd@z Thu Jan 1 00:00:00 1970 Message-ID: <53f12eb5933a22903e38de7a0c9f6a19@quanstro.net> To: 9fans@cse.psu.edu Subject: Re: [9fans] Page problems From: erik quanstrom Date: Sat, 29 Sep 2007 11:41:50 -0400 In-Reply-To: <20070929152846.GC801@shodan.homeunix.net> MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit Topicbox-Message-UUID: c76ec740-ead2-11e9-9d60-3106f5b1d025 > * erik quanstrom (quanstro@quanstro.net) wrote: >> in order for im to return nil, this test has to be true >> >> if((page < 0 || page >= doc->npage) && !doc->fwdonly) >> return nil; >> >> i think the question is, why is page out of range and what's it's value? >> >> - erik > > That happens at startup with the -i option. Somewhere in main is a call of > initgfx(nil, 0, nil, nil, 0) in that case. This leads to doc->npage being 0 > which puts any value of page out of range in this case. Essentially it's > something of a timing issue. Page wants to display an image and looks for it > in the cache. At that point the cache is empty because page gets the data > via the plumber and the event loop hasn't yet started to process plumbing > messages. At least that's as far as I have understood what's going on. And > it probably isn't the cause for Greg's problem (which I couldn't reproduce). > > Martin if this is a timing issue, then that should be addressed. if your diagnosis is correct, then if pagecache would slept until the event loop were running, that would fix the timing problem. maybe something like int eventdawn; /* set after event loop is fired up */ Image* cachedpage(Document *doc, int angle, int page) { static int lastpage = -1; static int rabusy; Image *im; int ra; + while(eventdawn == 0) + sleep(1);