https://git.reactos.org/?p=reactos.git;a=commitdiff;h=c243133b2c598bd004229…
commit c243133b2c598bd004229242f36d9159a8e45b99
Author: Hervé Poussineau <hpoussin(a)reactos.org>
AuthorDate: Sun May 22 13:19:55 2022 +0200
Commit: Hervé Poussineau <hpoussin(a)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++)