From acc0bffc446abdbb27455127a4e496b7ba09d26d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Deuc=D0=B5?= <shurd@sasktel.net>
Date: Sun, 7 May 2023 04:15:53 -0400
Subject: [PATCH] Fixup vstat after bitmap_drv_init_mode()

Now that vstat is what was last drawn on the screen we need to
save/restore the width/height around calls to bitmap_drv_init_mode().
---
 src/conio/x_events.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/src/conio/x_events.c b/src/conio/x_events.c
index 9cb37ca413..d199b0ec2b 100644
--- a/src/conio/x_events.c
+++ b/src/conio/x_events.c
@@ -494,6 +494,7 @@ static void resize_window()
 static void init_mode_internal(int mode)
 {
 	int mw, mh;
+	int ow, oh;
 
 	x11_get_maxsize(&mw, &mh);
 	pthread_mutex_lock(&vstatlock);
@@ -501,8 +502,15 @@ static void init_mode_internal(int mode)
 		release_buffer(last);
 		last = NULL;
 	}
+	ow = vstat.winwidth;
+	oh = vstat.winheight;
 	bitmap_drv_init_mode(mode, NULL, NULL, mw, mh);
+	x_cvstat = vstat;
+	vstat.winwidth = ow;
+	vstat.winheight = oh;
+	pthread_mutex_unlock(&vstatlock);
 	resize_window();
+	pthread_mutex_lock(&vstatlock);
 	x_cvstat = vstat;
 	pthread_mutex_unlock(&vstatlock);
 	resize_xim();
@@ -557,6 +565,7 @@ static int video_init()
 	bitmap_drv_init(x11_drawrect, x11_flush);
 	pthread_mutex_lock(&vstatlock);
 	bitmap_drv_init_mode(vstat.mode, NULL, NULL, 0, 0);
+	x_cvstat = vstat;
 	pthread_mutex_unlock(&vstatlock);
 	init_mode_internal(x_cvstat.mode);
 
-- 
GitLab