Index: reactos/dll/directx/wine/wined3d/device.c =================================================================== --- reactos/dll/directx/wine/wined3d/device.c (revision 74351) +++ reactos/dll/directx/wine/wined3d/device.c (working copy) @@ -1133,15 +1133,16 @@ struct wined3d_swapchain *swapchain = NULL; HRESULT hr; - TRACE("device %p, swapchain_desc %p.\n", device, swapchain_desc); + FIXME("device %p, swapchain_desc %p.\n", device, swapchain_desc); /* Setup the implicit swapchain */ - TRACE("Creating implicit swapchain\n"); + FIXME("Creating implicit swapchain\n"); hr = device->device_parent->ops->create_swapchain(device->device_parent, swapchain_desc, &swapchain); if (FAILED(hr)) { - WARN("Failed to create implicit swapchain\n"); + ERR("Failed to create implicit swapchain, hr=%x, create_swapchain=%p\n", + hr, device->device_parent->ops->create_swapchain); goto err_out; } @@ -1156,7 +1157,10 @@ return WINED3D_OK; err_out: - wined3d_swapchain_decref(swapchain); + if (swapchain) + { + wined3d_swapchain_decref(swapchain); + } return hr; } Index: rostests/apitests/user32/EnumDisplaySettings.c =================================================================== --- rostests/apitests/user32/EnumDisplaySettings.c (revision 74351) +++ rostests/apitests/user32/EnumDisplaySettings.c (working copy) @@ -2,6 +2,7 @@ #include #include +#include #define SIZEOF_DEVMODEW_300_W 188 #define SIZEOF_DEVMODEW_400_W 212 @@ -11,7 +12,9 @@ #define SIZEOF_DEVMODEW_400_A 148 #define SIZEOF_DEVMODEW_500_A 156 -START_TEST(EnumDisplaySettings) +static +VOID +TestDevModeSizes(VOID) { DEVMODEW dmW; DEVMODEA dmA; @@ -107,3 +110,95 @@ DeleteDC(icDisplay); } + +static +VOID +PrintMode(DEVMODEW *dm) +{ + printf(" .dmDeviceName = %ls\n", dm->dmDeviceName); + printf(" .dmSpecVersion = 0x%x\n", dm->dmSpecVersion); + printf(" .dmDriverVersion = 0x%x\n", dm->dmDriverVersion); + printf(" .dmSize = %u\n", dm->dmSize); + printf(" .dmDriverExtra = %u\n", dm->dmDriverExtra); + printf(" .dmFields = 0x%lx\n", dm->dmFields); +#define PRINT_FIELD(flag, field, spec) \ + if (dm->dmFields & (flag)) \ + printf(" ." #field " = " spec "\n", dm->field) + PRINT_FIELD(DM_ORIENTATION, dmOrientation, "%d"); + PRINT_FIELD(DM_PAPERSIZE, dmPaperSize, "%d"); + PRINT_FIELD(DM_PAPERLENGTH, dmPaperLength, "%d"); + PRINT_FIELD(DM_PAPERWIDTH, dmPaperWidth, "%d"); + PRINT_FIELD(DM_SCALE, dmScale, "%d"); + PRINT_FIELD(DM_COPIES, dmCopies, "%d"); + PRINT_FIELD(DM_DEFAULTSOURCE, dmDefaultSource, "%d"); + PRINT_FIELD(DM_PRINTQUALITY, dmPrintQuality, "%d"); + if (dm->dmFields & DM_POSITION) + printf(" .dmPosition = (%ld, %ld)\n", dm->dmPosition.x, dm->dmPosition.y); + PRINT_FIELD(DM_DISPLAYORIENTATION, dmDisplayOrientation, "%lu"); + PRINT_FIELD(DM_DISPLAYFIXEDOUTPUT, dmDisplayFixedOutput, "%lu"); + PRINT_FIELD(DM_COLOR, dmColor, "%d"); + PRINT_FIELD(DM_DUPLEX, dmDuplex, "%d"); + PRINT_FIELD(DM_YRESOLUTION, dmYResolution, "%d"); + PRINT_FIELD(DM_TTOPTION, dmTTOption, "%d"); + PRINT_FIELD(DM_COLLATE, dmCollate, "%d"); + PRINT_FIELD(DM_FORMNAME, dmFormName, "%ls"); + PRINT_FIELD(DM_LOGPIXELS, dmLogPixels, "%u"); + PRINT_FIELD(DM_BITSPERPEL, dmBitsPerPel, "%lu"); + PRINT_FIELD(DM_PELSWIDTH, dmPelsWidth, "%lu"); + PRINT_FIELD(DM_PELSHEIGHT, dmPelsHeight, "%lu"); + PRINT_FIELD(DM_DISPLAYFLAGS, dmDisplayFlags, "%lu"); + PRINT_FIELD(DM_NUP, dmNup, "%lu"); + PRINT_FIELD(DM_DISPLAYFREQUENCY, dmDisplayFrequency, "%lu"); + PRINT_FIELD(DM_ICMMETHOD, dmICMMethod, "%lu"); + PRINT_FIELD(DM_ICMINTENT, dmICMIntent, "%lu"); + PRINT_FIELD(DM_MEDIATYPE, dmMediaType, "%lu"); + PRINT_FIELD(DM_DITHERTYPE, dmDitherType, "%lu"); + PRINT_FIELD(DM_PANNINGWIDTH, dmPanningWidth, "%lu"); + PRINT_FIELD(DM_PANNINGHEIGHT, dmPanningHeight, "%lu"); +#undef PRINT_FIELD +} + +static +VOID +TestAllModes(VOID) +{ + BOOL ret; + DEVMODEW dmCurrent; + DEVMODEW dmW; + int i; + BOOL foundCurrent; + + ZeroMemory(&dmCurrent, sizeof(dmCurrent)); + dmCurrent.dmSize = sizeof(dmCurrent); + ret = EnumDisplaySettingsExW(NULL, ENUM_CURRENT_SETTINGS, &dmCurrent, 0); + ok(ret == TRUE, "EnumDisplaySettingsExW return %d (%lu)\n", ret, GetLastError()); + printf("Current Mode\n"); + PrintMode(&dmCurrent); + + foundCurrent = FALSE; + for (i = 0; ret; i++) + { + ZeroMemory(&dmW, sizeof(dmW)); + dmW.dmSize = sizeof(dmW); + ret = EnumDisplaySettingsExW(NULL, i, &dmW, 0); + printf("Mode %d\n", i); + PrintMode(&dmW); + if (dmCurrent.dmFields & dmW.dmFields & DM_BITSPERPEL && + dmCurrent.dmBitsPerPel != dmW.dmBitsPerPel) continue; + if (dmCurrent.dmFields & dmW.dmFields & DM_PELSWIDTH && + dmCurrent.dmPelsWidth != dmW.dmPelsWidth) continue; + if (dmCurrent.dmFields & dmW.dmFields & DM_PELSHEIGHT && + dmCurrent.dmPelsHeight != dmW.dmPelsHeight) continue; + if (dmCurrent.dmFields & dmW.dmFields & DM_DISPLAYFREQUENCY && + dmCurrent.dmBitsPerPel != dmW.dmDisplayFrequency) continue; + foundCurrent = TRUE; + } + + ok(foundCurrent == TRUE, "Did not find current mode\n"); +} + +START_TEST(EnumDisplaySettings) +{ + TestDevModeSizes(); + TestAllModes(); +}