Skip to content

Commit ef60fb2

Browse files
committed
[GDITOOLS] Improve ChangeScreenBpp utility function
1 parent d3aef68 commit ef60fb2

4 files changed

Lines changed: 34 additions & 14 deletions

File tree

modules/rostests/apitests/gditools/gditools.c

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -106,10 +106,24 @@ GdiGetHandleUserData(
106106
return pentry->pUser;
107107
}
108108

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+
109123
BOOL
110124
ChangeScreenBpp(
111125
_In_ ULONG cBitsPixel,
112-
_Out_ PULONG pcOldBitsPixel)
126+
_Out_ PDEVMODEW pdmOld)
113127
{
114128
DEVMODEW dm = { .dmSize = sizeof(dm) };
115129

@@ -119,18 +133,26 @@ ChangeScreenBpp(
119133
return FALSE;
120134
}
121135

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;
123140

124141
if (dm.dmBitsPerPel != cBitsPixel)
125142
{
126143
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)
128145
{
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();
130148
return FALSE;
131149
}
132150
}
133151

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);
155+
134156
return TRUE;
135157
}
136158

modules/rostests/apitests/gditools/gditools.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,4 +44,4 @@ GdiGetHandleUserData(
4444
BOOL
4545
ChangeScreenBpp(
4646
_In_ ULONG cBitsPixel,
47-
_Out_ PULONG pcOldBitsPixel);
47+
_Out_ PDEVMODEW pdmOld);

modules/rostests/apitests/win32u/ntgdi/NtGdiBitBlt.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -355,8 +355,8 @@ START_TEST(NtGdiBitBlt)
355355
{
356356
ok(GdiToolsInit(), "GdiToolsInit failed\n");
357357

358-
ULONG cBitsPixel;
359-
ChangeScreenBpp(32, &cBitsPixel);
358+
DEVMODEW dmOld;
359+
ChangeScreenBpp(32, &dmOld);
360360

361361
ghdcDDB1 = CreateCompatibleDC(NULL);
362362
SelectObject(ghdcDDB1, ghbmp1);
@@ -371,5 +371,5 @@ START_TEST(NtGdiBitBlt)
371371
gbUseCLR_INVALID = FALSE;
372372
Test_NtGdiBitBlt_1BPP();
373373

374-
ChangeScreenBpp(cBitsPixel, &cBitsPixel);
374+
ChangeDisplaySettingsW(&dmOld, 0);
375375
}

modules/rostests/apitests/win32u/ntgdi/NtGdiLineTo.c

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
#define DIBINDEX(n) MAKELONG((n),0x10FF)
1212

13-
static HDC ghdcDDB1, ghdcDDB32;
13+
static HDC ghdcDDB1;
1414

1515
static
1616
COLORREF
@@ -186,18 +186,16 @@ START_TEST(NtGdiLineTo)
186186
{
187187
ok(GdiToolsInit(), "GdiToolsInit failed\n");
188188

189-
ULONG cBitsPixel;
190-
ChangeScreenBpp(32, &cBitsPixel);
189+
DEVMODEW dmOld;
190+
ChangeScreenBpp(32, &dmOld);
191191

192192
ghdcDDB1 = CreateCompatibleDC(NULL);
193193
ok(SelectObject(ghdcDDB1, ghbmp1) != NULL, "SelectObject failed\n");
194-
ghdcDDB32 = CreateCompatibleDC(NULL);
195-
ok(SelectObject(ghdcDDB32, ghbmp32) != NULL, "SelectObject failed\n");
196194

197195
Test_NtGdiLineTo_1BPP_BW(ghdcDDB1);
198196
Test_NtGdiLineTo_1BPP_BW(ghdcDIB1);
199197
Test_NtGdiLineTo_1BPP_BW(ghdcDIB1_InvCol);
200198
Test_NtGdiLineTo_1BPP_RB();
201199

202-
ChangeScreenBpp(cBitsPixel, &cBitsPixel);
200+
ChangeDisplaySettingsW(&dmOld, 0);
203201
}

0 commit comments

Comments
 (0)