From c3a8dc07985c759902ea7724655af1a087959b1c Mon Sep 17 00:00:00 2001 From: Vincent Wei Date: Thu, 15 Jun 2023 08:53:21 +0800 Subject: [PATCH] fix a bug in Shadow NEWGAL engine: SetVideoMode may return another surface, e.g., when using double bufffering of fbcon engine. --- src/newgal/shadow/shadow.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/newgal/shadow/shadow.c b/src/newgal/shadow/shadow.c index 478195d2..5fad2243 100644 --- a/src/newgal/shadow/shadow.c +++ b/src/newgal/shadow/shadow.c @@ -309,11 +309,13 @@ static int RealEngine_GetInfo (RealFBInfo * realfb_info) 0, 0, real_vformat.BitsPerPixel, real_vformat.Rmask, real_vformat.Gmask, real_vformat.Bmask, real_vformat.Amask); - if (real_device->screen == NULL) - _ERR_PRINTF ("NEWGAL>SHADOW: can't create screen of real engine.\n"); - - real_device->SetVideoMode(realfb_info->real_device, + /* VW: SetVideoMode may return a new surface */ + real_device->screen = real_device->SetVideoMode(realfb_info->real_device, real_device->screen, w, h, depth, GAL_HWPALETTE); + if (real_device->screen == NULL) { + _ERR_PRINTF ("NEWGAL>SHADOW: can't create screen of real engine.\n"); + return -1; + } realfb_info->height = real_device->screen->h; realfb_info->width = real_device->screen->w;