7 #define NSCRS ((sizeof(saved) - 1) * 2)
8 #define SNAPSZ (1 << 23)
10 static char saved
[] = TAGS_SAVED
;
11 static char scrs
[NSCRS
][SNAPSZ
];
12 static void *owners
[NSCRS
];
14 static int scr_find(void *owner
)
17 for (i
= 0; i
< NSCRS
; i
++)
18 if (owners
[i
] == owner
)
23 static int scr_slot(void)
25 int index
= scr_find(NULL
);
26 return index
> -1 ? index
: 0;
29 void scr_snap(void *owner
)
31 int rowsz
= sizeof(fbval_t
) * fb_cols();
34 for (i
= 0; i
< fb_rows(); i
++)
35 memcpy(scrs
[scr
] + i
* rowsz
, fb_mem(i
), rowsz
);
39 void scr_free(void *owner
)
41 int scr
= scr_find(owner
);
46 int scr_load(void *owner
)
48 int rowsz
= sizeof(fbval_t
) * fb_cols();
49 int scr
= scr_find(owner
);
53 for (i
= 0; i
< fb_rows(); i
++)
54 memcpy(fb_mem(i
), scrs
[scr
] + i
* rowsz
, rowsz
);