https://git.reactos.org/?p=reactos.git;a=commitdiff;h=c243133b2c598bd0042292...
commit c243133b2c598bd004229242f36d9159a8e45b99 Author: Hervé Poussineau hpoussin@reactos.org AuthorDate: Sun May 22 13:19:55 2022 +0200 Commit: Hervé Poussineau hpoussin@reactos.org CommitDate: Sun May 22 17:31:40 2022 +0200
[WIN32SS] Only refresh graphics mode list when iModeNum = 0
We don't expect graphics mode list to change while enumerating it. --- win32ss/user/ntuser/display.c | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-)
diff --git a/win32ss/user/ntuser/display.c b/win32ss/user/ntuser/display.c index 8f15a68e1bf..c3751517527 100644 --- a/win32ss/user/ntuser/display.c +++ b/win32ss/user/ntuser/display.c @@ -412,27 +412,36 @@ UserEnumDisplaySettings( PGRAPHICS_DEVICE pGraphicsDevice; PDEVMODEENTRY pdmentry; ULONG i, iFoundMode; - PPDEVOBJ ppdev;
TRACE("Enter UserEnumDisplaySettings('%wZ', %lu)\n", pustrDevice, iModeNum);
/* Ask GDI for the GRAPHICS_DEVICE */ pGraphicsDevice = EngpFindGraphicsDevice(pustrDevice, 0); - ppdev = EngpGetPDEV(pustrDevice); - - if (!pGraphicsDevice || !ppdev) + if (!pGraphicsDevice) { /* No device found */ ERR("No device found!\n"); return STATUS_INVALID_PARAMETER_1; }
- /* let's politely ask the driver for an updated mode list, - just in case there's something new in there (vbox) */ + if (iModeNum == 0) + { + PPDEVOBJ ppdev; + ppdev = EngpGetPDEV(pustrDevice); + if (!ppdev) + { + /* No device found */ + ERR("No device found!\n"); + return STATUS_INVALID_PARAMETER_1; + } + + /* Let's politely ask the driver for an updated mode list, + * just in case there's something new in there (vbox) */
- PDEVOBJ_vRefreshModeList(ppdev); - PDEVOBJ_vRelease(ppdev); + PDEVOBJ_vRefreshModeList(ppdev); + PDEVOBJ_vRelease(ppdev); + }
iFoundMode = 0; for (i = 0; i < pGraphicsDevice->cDevModes; i++)