[WIN32SS] In PDEVOBJ_vRefreshModeList, do not change current stored mode

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
This commit is contained in:
Hervé Poussineau 2022-04-30 23:26:53 +02:00
parent d1cd80c861
commit d8b3402fe6

View file

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