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