Reactos

[GDITOOLS] Improve ChangeScreenBpp utility function

+34 -14
+26 -4
modules/rostests/apitests/gditools/gditools.c
··· 106 106 return pentry->pUser; 107 107 } 108 108 109 + VOID 110 + PrintAvailableDisplayModes(void) 111 + { 112 + DEVMODEW dm = { .dmSize = sizeof(dm) }; 113 + ULONG iMode = 0; 114 + 115 + printf("Available display modes:\n"); 116 + while (EnumDisplaySettingsW(NULL, iMode++, &dm)) 117 + { 118 + printf(" %ux%u @ %u bpp, freq: %u Hz\n", 119 + dm.dmPelsWidth, dm.dmPelsHeight, dm.dmBitsPerPel, dm.dmDisplayFrequency); 120 + } 121 + } 122 + 109 123 BOOL 110 124 ChangeScreenBpp( 111 125 _In_ ULONG cBitsPixel, 112 - _Out_ PULONG pcOldBitsPixel) 126 + _Out_ PDEVMODEW pdmOld) 113 127 { 114 128 DEVMODEW dm = { .dmSize = sizeof(dm) }; 115 129 ··· 119 133 return FALSE; 120 134 } 121 135 122 - *pcOldBitsPixel = dm.dmBitsPerPel; 136 + printf("ChangeScreenBpp(%lu): Old display settings: %ux%u @ %u bpp\n", 137 + cBitsPixel, dm.dmPelsWidth, dm.dmPelsHeight, dm.dmBitsPerPel); 138 + 139 + *pdmOld = dm; 123 140 124 141 if (dm.dmBitsPerPel != cBitsPixel) 125 142 { 126 143 dm.dmBitsPerPel = cBitsPixel; 127 - if (ChangeDisplaySettingsExW(NULL, &dm, NULL, CDS_UPDATEREGISTRY | CDS_GLOBAL, NULL) != DISP_CHANGE_SUCCESSFUL) 144 + if (ChangeDisplaySettingsW(&dm, 0) != DISP_CHANGE_SUCCESSFUL) 128 145 { 129 - printf("Failed to change display settings to %lu bpp. Current bpp: %u\n", cBitsPixel, *pcOldBitsPixel); 146 + printf("Failed to change display settings.\n"); 147 + PrintAvailableDisplayModes(); 130 148 return FALSE; 131 149 } 132 150 } 151 + 152 + EnumDisplaySettingsW(NULL, ENUM_CURRENT_SETTINGS, &dm); 153 + printf("ChangeScreenBpp(%lu): New display settings: %ux%u @ %u bpp\n", 154 + cBitsPixel, dm.dmPelsWidth, dm.dmPelsHeight, dm.dmBitsPerPel); 133 155 134 156 return TRUE; 135 157 }
+1 -1
modules/rostests/apitests/gditools/gditools.h
··· 44 44 BOOL 45 45 ChangeScreenBpp( 46 46 _In_ ULONG cBitsPixel, 47 - _Out_ PULONG pcOldBitsPixel); 47 + _Out_ PDEVMODEW pdmOld);
+3 -3
modules/rostests/apitests/win32u/ntgdi/NtGdiBitBlt.c
··· 355 355 { 356 356 ok(GdiToolsInit(), "GdiToolsInit failed\n"); 357 357 358 - ULONG cBitsPixel; 359 - ChangeScreenBpp(32, &cBitsPixel); 358 + DEVMODEW dmOld; 359 + ChangeScreenBpp(32, &dmOld); 360 360 361 361 ghdcDDB1 = CreateCompatibleDC(NULL); 362 362 SelectObject(ghdcDDB1, ghbmp1); ··· 371 371 gbUseCLR_INVALID = FALSE; 372 372 Test_NtGdiBitBlt_1BPP(); 373 373 374 - ChangeScreenBpp(cBitsPixel, &cBitsPixel); 374 + ChangeDisplaySettingsW(&dmOld, 0); 375 375 }
+4 -6
modules/rostests/apitests/win32u/ntgdi/NtGdiLineTo.c
··· 10 10 11 11 #define DIBINDEX(n) MAKELONG((n),0x10FF) 12 12 13 - static HDC ghdcDDB1, ghdcDDB32; 13 + static HDC ghdcDDB1; 14 14 15 15 static 16 16 COLORREF ··· 186 186 { 187 187 ok(GdiToolsInit(), "GdiToolsInit failed\n"); 188 188 189 - ULONG cBitsPixel; 190 - ChangeScreenBpp(32, &cBitsPixel); 189 + DEVMODEW dmOld; 190 + ChangeScreenBpp(32, &dmOld); 191 191 192 192 ghdcDDB1 = CreateCompatibleDC(NULL); 193 193 ok(SelectObject(ghdcDDB1, ghbmp1) != NULL, "SelectObject failed\n"); 194 - ghdcDDB32 = CreateCompatibleDC(NULL); 195 - ok(SelectObject(ghdcDDB32, ghbmp32) != NULL, "SelectObject failed\n"); 196 194 197 195 Test_NtGdiLineTo_1BPP_BW(ghdcDDB1); 198 196 Test_NtGdiLineTo_1BPP_BW(ghdcDIB1); 199 197 Test_NtGdiLineTo_1BPP_BW(ghdcDIB1_InvCol); 200 198 Test_NtGdiLineTo_1BPP_RB(); 201 199 202 - ChangeScreenBpp(cBitsPixel, &cBitsPixel); 200 + ChangeDisplaySettingsW(&dmOld, 0); 203 201 }