Roderick Colenbrander : wined3d: Check the results of SetPixelFormat.
Module: wine Branch: master Commit: 1dc0298a55b6050f19cf2df298268dcda4b85081 URL: http://source.winehq.org/git/wine.git/?a=commit;h=1dc0298a55b6050f19cf2df298... Author: Roderick Colenbrander <thunderbird2k(a)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);
participants (1)
-
Alexandre Julliard