6 #define NSCRS ((sizeof(saved) - 1) * 2)
7 #define SNAPSZ (1 << 23)
9 static char saved
[] = TAGS_SAVED
;
10 static char scrs
[NSCRS
][SNAPSZ
];
11 static void *owners
[NSCRS
];
13 static int scr_find(void *owner
)
16 for (i
= 0; i
< NSCRS
; i
++)
17 if (owners
[i
] == owner
)
22 static int scr_slot(void)
24 int index
= scr_find(NULL
);
25 return index
> -1 ? index
: 0;
28 void scr_snap(void *owner
)
30 int rowsz
= sizeof(fbval_t
) * fb_cols();
33 for (i
= 0; i
< fb_rows(); i
++)
34 memcpy(scrs
[scr
] + i
* rowsz
, fb_mem(i
), rowsz
);
38 void scr_free(void *owner
)
40 int scr
= scr_find(owner
);
45 int scr_load(void *owner
)
47 int rowsz
= sizeof(fbval_t
) * fb_cols();
48 int scr
= scr_find(owner
);
52 for (i
= 0; i
< fb_rows(); i
++)
53 memcpy(fb_mem(i
), scrs
[scr
] + i
* rowsz
, rowsz
);