[Xquartz-changes] [220] AppleSGLX/trunk/glx_pbuffer.c

source_changes at macosforge.org source_changes at macosforge.org
Sat Feb 21 17:12:50 PST 2009


Revision: 220
          http://trac.macosforge.org/projects/xquartz/changeset/220
Author:   gstaplin at apple.com
Date:     2009-02-21 17:12:49 -0800 (Sat, 21 Feb 2009)
Log Message:
-----------
Add some support code for glXCreateWindow and glXDestroyWindow.  They should work now.

Modified Paths:
--------------
    AppleSGLX/trunk/glx_pbuffer.c

Modified: AppleSGLX/trunk/glx_pbuffer.c
===================================================================
--- AppleSGLX/trunk/glx_pbuffer.c	2009-02-22 01:12:06 UTC (rev 219)
+++ AppleSGLX/trunk/glx_pbuffer.c	2009-02-22 01:12:49 UTC (rev 220)
@@ -253,8 +253,56 @@
 glXCreateWindow( Display *dpy, GLXFBConfig config, Window win,
 		 const int *attrib_list )
 {
-    fprintf(stderr, "%s FIXME", __func__);
-    abort();
+    XWindowAttributes xwattr;
+    XVisualInfo *visinfo;
+
+    (void)attrib_list; /*unused according to GLX 1.4*/
+    
+    XGetWindowAttributes(dpy, win, &xwattr);
+    
+    visinfo = glXGetVisualFromFBConfig(dpy, config);
+
+    if(NULL == visinfo) {
+	xError error;
+
+	LockDisplay(dpy);
+
+	error.errorCode = GLXBadFBConfig;
+        error.resourceID = 0;
+        error.sequenceNumber = dpy->request;
+        error.type = X_Error;
+        error.majorCode = 0;
+        error.minorCode = X_GLXCreateWindow;
+        _XError(dpy, &error);
+	
+	UnlockDisplay(dpy);
+
+	return None;
+    }
+
+    if(visinfo->visualid != XVisualIDFromVisual(xwattr.visual)) {
+	xError error;
+
+	XFree(visinfo);
+
+	LockDisplay(dpy);
+
+        error.errorCode = BadMatch;
+        error.resourceID = 0;
+        error.sequenceNumber = dpy->request;
+        error.type = X_Error;
+        error.majorCode = 0;
+        error.minorCode = X_GLXCreateWindow;
+        _XError(dpy, &error);
+
+        UnlockDisplay(dpy);
+
+	return None;
+    }
+
+    XFree(visinfo);
+
+    return win;
 }
 
 
@@ -268,7 +316,5 @@
 PUBLIC void
 glXDestroyWindow(Display *dpy, GLXWindow win)
 {
-    fprintf(stderr, "%s FIXME\n", __func__);
-    abort();
+    /* no-op */
 }
-
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/xquartz-changes/attachments/20090221/188d3a62/attachment.html>


More information about the Xquartz-changes mailing list