Chris Robinson : wgl: Don' t return prematurely if ConvertPixelFormatWGLtoGLX receives an invalid pixel format .

Alexandre Julliard julliard at wine.codeweavers.com
Mon Dec 4 07:17:05 CST 2006


Module: wine
Branch: master
Commit: b4f0adbf96060556a69099132bb43c5cffd0495e
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=b4f0adbf96060556a69099132bb43c5cffd0495e

Author: Chris Robinson <chris.kcat at gmail.com>
Date:   Sat Dec  2 18:06:42 2006 -0800

wgl: Don't return prematurely if ConvertPixelFormatWGLtoGLX receives an invalid pixel format.

---

 dlls/winex11.drv/opengl.c |   14 ++++++++++----
 1 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/dlls/winex11.drv/opengl.c b/dlls/winex11.drv/opengl.c
index 465f2ef..5779bce 100644
--- a/dlls/winex11.drv/opengl.c
+++ b/dlls/winex11.drv/opengl.c
@@ -876,20 +876,26 @@ static BOOL init_formats(Display *displa
  */
 static BOOL ConvertPixelFormatWGLtoGLX(Display *display, int iPixelFormat, int *fmt_index, int *fmt_count)
 {
+    int ret;
+
     /* Init the list of pixel formats when we need it */
     if(!WineGLPixelFormatListSize)
         init_formats(display, DefaultScreen(display), visual);
 
     if((iPixelFormat <= 0) || (iPixelFormat > WineGLPixelFormatListSize)) {
         ERR("invalid iPixelFormat %d\n", iPixelFormat);
-        return FALSE;
+        ret = FALSE;
+        *fmt_index = -1;
+    }
+    else {
+        ret = TRUE;
+        *fmt_index = WineGLPixelFormatList[iPixelFormat-1].fmt_index;
     }
 
-    *fmt_index = WineGLPixelFormatList[iPixelFormat-1].fmt_index;
     *fmt_count = WineGLPixelFormatListSize;
     TRACE("Returning fmt_index=%d, fmt_count=%d for iPixelFormat=%d\n", *fmt_index, *fmt_count, iPixelFormat);
 
-    return TRUE;
+    return ret;
 }
 
 /* Search our internal pixelformat list for the WGL format corresponding to the given fbconfig */
@@ -2272,7 +2278,7 @@ static GLboolean WINAPI X11DRV_wglGetPix
     * We don't have to fail yet as a program can specify an invaled iPixelFormat (lets say 0) if it wants to query
     * the number of supported WGL formats. Whether the iPixelFormat is valid is handled in the for-loop below. */
     if(!ConvertPixelFormatWGLtoGLX(gdi_display, iPixelFormat, &fmt_index, &nWGLFormats)) {
-        ERR("Unable to convert iPixelFormat %d to a GLX one, expect problems!\n", iPixelFormat);
+        WARN("Unable to convert iPixelFormat %d to a GLX one!\n", iPixelFormat);
     }
 
     for (i = 0; i < nAttributes; ++i) {




More information about the wine-cvs mailing list