From 6034b6742c43a7536e1913fea58c4815f219619e Mon Sep 17 00:00:00 2001 From: deuce <> Date: Wed, 18 Apr 2018 06:44:48 +0000 Subject: [PATCH] Have save/restorescreen() save and restore the flags and fonts as well. --- src/conio/ciolib.c | 8 ++++++++ src/conio/ciolib.h | 2 ++ 2 files changed, 10 insertions(+) diff --git a/src/conio/ciolib.c b/src/conio/ciolib.c index 2e503113f9..02ec8bd3af 100644 --- a/src/conio/ciolib.c +++ b/src/conio/ciolib.c @@ -1827,6 +1827,7 @@ CIOLIBEXPORT struct ciolib_screen * CIOLIBCALL ciolib_savescreen(void) { struct ciolib_screen *ret; int vmode; + int i; CIOLIB_INIT(); @@ -1861,6 +1862,9 @@ CIOLIBEXPORT struct ciolib_screen * CIOLIBCALL ciolib_savescreen(void) ciolib_vmem_gettext(1, 1, ret->text_info.screenwidth, ret->text_info.screenheight, ret->vmem); ret->fg_colour = ciolib_fg; ret->bg_colour = ciolib_bg; + for (i=0; i<5; i++) + ret->fonts[i] = ciolib_getfont(i); + ret->flags = ciolib_getvideoflags(); return ret; } @@ -1882,6 +1886,7 @@ CIOLIBEXPORT int CIOLIBCALL ciolib_restorescreen(struct ciolib_screen *scrn) { struct text_info ti; int vmode; + int i; CIOLIB_INIT(); @@ -1895,6 +1900,9 @@ CIOLIBEXPORT int CIOLIBCALL ciolib_restorescreen(struct ciolib_screen *scrn) vmode = find_vmode(scrn->text_info.currmode); if (vmode != -1) ciolib_setpixels(0, 0, vparams[vmode].charwidth * vparams[vmode].cols - 1, vparams[vmode].charheight * vparams[vmode].rows - 1, 0, 0, scrn->pixels, NULL); + for (i=0; i<5; i++) + ciolib_setfont(scrn->fonts[i], FALSE, i); + ciolib_setvideoflags(scrn->flags); ciolib_setcolour(scrn->fg_colour, scrn->bg_colour); ciolib_gotoxy(scrn->text_info.curx, scrn->text_info.cury); return 1; diff --git a/src/conio/ciolib.h b/src/conio/ciolib.h index 96f5cf9de3..93c195cb2a 100644 --- a/src/conio/ciolib.h +++ b/src/conio/ciolib.h @@ -261,6 +261,8 @@ struct ciolib_pixels { struct ciolib_screen { uint32_t fg_colour; uint32_t bg_colour; + int flags; + int fonts[5]; struct ciolib_pixels *pixels; void *vmem; uint32_t *foreground; -- GitLab