https://git.reactos.org/?p=reactos.git;a=commitdiff;h=c243133b2c598bd004229242f36d9159a8e45b99

commit c243133b2c598bd004229242f36d9159a8e45b99
Author:     Hervé Poussineau <[email protected]>
AuthorDate: Sun May 22 13:19:55 2022 +0200
Commit:     Hervé Poussineau <[email protected]>
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++)

Reply via email to