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