Module: wine Branch: master Commit: 1dc0298a55b6050f19cf2df298268dcda4b85081 URL: http://source.winehq.org/git/wine.git/?a=commit;h=1dc0298a55b6050f19cf2df298...
Author: Roderick Colenbrander thunderbird2k@gmx.net Date: Sat Aug 11 17:04:26 2007 +0200
wined3d: Check the results of SetPixelFormat.
---
dlls/wined3d/context.c | 16 +++++++++++++++- 1 files changed, 15 insertions(+), 1 deletions(-)
diff --git a/dlls/wined3d/context.c b/dlls/wined3d/context.c index 9edbd73..0727aee 100644 --- a/dlls/wined3d/context.c +++ b/dlls/wined3d/context.c @@ -208,6 +208,7 @@ WineD3DContext *CreateContext(IWineD3DDeviceImpl *This, IWineD3DSurfaceImpl *tar short red, green, blue, alpha; short colorBits; short depthBits, stencilBits; + int res;
hdc = GetDC(win_handle); if(hdc == NULL) { @@ -249,7 +250,20 @@ WineD3DContext *CreateContext(IWineD3DDeviceImpl *This, IWineD3DSurfaceImpl *tar }
DescribePixelFormat(hdc, iPixelFormat, sizeof(pfd), &pfd); - SetPixelFormat(hdc, iPixelFormat, NULL); + res = SetPixelFormat(hdc, iPixelFormat, NULL); + if(!res) { + int oldPixelFormat = GetPixelFormat(hdc); + + if(oldPixelFormat) { + /* OpenGL doesn't allow pixel format adjustments. Print an error and continue using the old format. + * There's a big chance that the old format works although with a performance hit and perhaps rendering errors. */ + ERR("HDC=%p is already set to iPixelFormat=%d and OpenGL doesn't allow changes!\n", hdc, oldPixelFormat); + } + else { + ERR("SetPixelFormat failed on HDC=%p for iPixelFormat=%d\n", hdc, iPixelFormat); + return FALSE; + } + } }
ctx = wglCreateContext(hdc);