[WIN32SS] In PDEVOBJ_vRefreshModeList, do not change current stored mode
authorHervé Poussineau <hpoussin@reactos.org>
Sat, 30 Apr 2022 21:26:53 +0000 (23:26 +0200)
committerHervé Poussineau <hpoussin@reactos.org>
Sat, 30 Apr 2022 21:33:42 +0000 (23:33 +0200)
When changing current devmode, we must not only change ppdev->pdmwDev
pointer, but also update lots of other structures. This work is done by
PDEVOBJ_lChangeDisplaySettings.

CORE-18169

win32ss/gdi/eng/pdevobj.c

index 5ef22da..65469cf 100644 (file)
@@ -379,7 +379,6 @@ PDEVOBJ_vRefreshModeList(
 {
     PGRAPHICS_DEVICE pGraphicsDevice;
     PDEVMODEINFO pdminfo, pdmiNext;
-    PDEVMODEW newDevMode;
 
     /* Lock the PDEV */
     EngAcquireSemaphore(ppdev->hsemDevLock);
@@ -398,12 +397,8 @@ PDEVOBJ_vRefreshModeList(
     ExFreePoolWithTag(pGraphicsDevice->pDevModeList, GDITAG_GDEVICE);
     pGraphicsDevice->pDevModeList = NULL;
 
-    /* Search an available display mode */
-    if (LDEVOBJ_bProbeAndCaptureDevmode(pGraphicsDevice, ppdev->pdmwDev, &newDevMode, TRUE))
-    {
-        ExFreePoolWithTag(ppdev->pdmwDev, GDITAG_DEVMODE);
-        ppdev->pdmwDev = newDevMode;
-    }
+    /* Update available display mode list */
+    LDEVOBJ_bBuildDevmodeList(pGraphicsDevice);
 
     /* Unlock PDEV */
     EngReleaseSemaphore(ppdev->hsemDevLock);