1234567891011121314151617181920212223242526272829303132333435 |
- #include <u.h>
- #include <libc.h>
- #include <draw.h>
- #include <memdraw.h>
- #include <memlayer.h>
- int
- memlsetrefresh(Memimage *i, Refreshfn fn, void *ptr)
- {
- Memlayer *l;
- l = i->layer;
- if(l->refreshfn!=nil && fn!=nil){ /* just change functions */
- l->refreshfn = fn;
- l->refreshptr = ptr;
- return 1;
- }
- if(l->refreshfn == nil){ /* is using backup image; just free it */
- freememimage(l->save);
- l->save = nil;
- l->refreshfn = fn;
- l->refreshptr = ptr;
- return 1;
- }
- l->save = allocmemimage(i->r, i->chan);
- if(l->save == nil)
- return 0;
- /* easiest way is just to update the entire save area */
- l->refreshfn(i, i->r, l->refreshptr);
- l->refreshfn = nil;
- l->refreshptr = nil;
- return 1;
- }
|