commit 65a49077784c32b2f7032ceb30e31254e1d7566b
Author: Francois Gouget <fgouget@codeweavers.com>
Date:   Tue Jan 30 13:51:47 2007 +0100

    wined3d: Detect when ChangeDisplaySettingsEx() fails and return an error.

diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index c37a7a0..6271eba 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -1525,7 +1525,11 @@ static HRESULT WINAPI IWineD3DDeviceImpl_CreateAdditionalSwapChain(IWineD3DDevic
         devmode.dmPelsWidth  = *(pPresentationParameters->BackBufferWidth);
         devmode.dmPelsHeight = *(pPresentationParameters->BackBufferHeight);
         MultiByteToWideChar(CP_ACP, 0, "Gamers CG", -1, devmode.dmDeviceName, CCHDEVICENAME);
-        ChangeDisplaySettingsExW(devmode.dmDeviceName, &devmode, object->win_handle, CDS_FULLSCREEN, NULL);
+        if (ChangeDisplaySettingsExW(devmode.dmDeviceName, &devmode, object->win_handle, CDS_FULLSCREEN, NULL) != DISP_CHANGE_SUCCESSFUL)
+        {
+            HeapFree(GetProcessHeap(), 0, object);
+            return WINED3DERR_NOTAVAILABLE;
+        }
 
         /* For GetDisplayMode */
         This->ddraw_width = devmode.dmPelsWidth;
