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