Blame


1 76193d7c 2003-09-30 devnull #include <u.h>
2 76193d7c 2003-09-30 devnull #include <libc.h>
3 76193d7c 2003-09-30 devnull #include <draw.h>
4 76193d7c 2003-09-30 devnull #include <memdraw.h>
5 76193d7c 2003-09-30 devnull #include <memlayer.h>
6 76193d7c 2003-09-30 devnull
7 76193d7c 2003-09-30 devnull int
8 76193d7c 2003-09-30 devnull memlsetrefresh(Memimage *i, Refreshfn fn, void *ptr)
9 76193d7c 2003-09-30 devnull {
10 76193d7c 2003-09-30 devnull Memlayer *l;
11 76193d7c 2003-09-30 devnull
12 76193d7c 2003-09-30 devnull l = i->layer;
13 a8763864 2004-07-09 devnull if(l->refreshfn!=0 && fn!=0){ /* just change functions */
14 76193d7c 2003-09-30 devnull l->refreshfn = fn;
15 76193d7c 2003-09-30 devnull l->refreshptr = ptr;
16 76193d7c 2003-09-30 devnull return 1;
17 76193d7c 2003-09-30 devnull }
18 76193d7c 2003-09-30 devnull
19 a8763864 2004-07-09 devnull if(l->refreshfn == 0){ /* is using backup image; just free it */
20 76193d7c 2003-09-30 devnull freememimage(l->save);
21 76193d7c 2003-09-30 devnull l->save = nil;
22 76193d7c 2003-09-30 devnull l->refreshfn = fn;
23 76193d7c 2003-09-30 devnull l->refreshptr = ptr;
24 76193d7c 2003-09-30 devnull return 1;
25 76193d7c 2003-09-30 devnull }
26 76193d7c 2003-09-30 devnull
27 76193d7c 2003-09-30 devnull l->save = allocmemimage(i->r, i->chan);
28 76193d7c 2003-09-30 devnull if(l->save == nil)
29 76193d7c 2003-09-30 devnull return 0;
30 76193d7c 2003-09-30 devnull /* easiest way is just to update the entire save area */
31 76193d7c 2003-09-30 devnull l->refreshfn(i, i->r, l->refreshptr);
32 be22ae2d 2004-03-26 devnull l->refreshfn = 0;
33 76193d7c 2003-09-30 devnull l->refreshptr = nil;
34 76193d7c 2003-09-30 devnull return 1;
35 76193d7c 2003-09-30 devnull }