Revision
301
Author
gstaplin@apple.com
Date
2009-03-09 20:00:47 -0700 (Mon, 09 Mar 2009)

Log Message

Enable the kCGLPFAMultisample bit when multisampling is requested.

Modified Paths

Diff

Modified: AppleSGLX/trunk/apple_visual.c (300 => 301)


--- AppleSGLX/trunk/apple_visual.c	2009-03-10 02:21:16 UTC (rev 300)
+++ AppleSGLX/trunk/apple_visual.c	2009-03-10 03:00:47 UTC (rev 301)
@@ -30,6 +30,7 @@
 #include <stdbool.h>
 #include <stdio.h>
 #include <stdlib.h>
+#include <assert.h>
 #include <GL/gl.h>
 #include <OpenGL/OpenGL.h>
 #include <OpenGL/CGLContext.h>
@@ -37,10 +38,14 @@
 #include "apple_cgl.h"
 #include "apple_visual.h"
 
+enum {
+    MAX_ATTR = 60
+};
+
 /*mode is a __GlcontextModes*/
 void apple_visual_create_pfobj(CGLPixelFormatObj *pfobj, const void *mode,
 			       bool *double_buffered, bool offscreen) {
-    CGLPixelFormatAttribute attr[60];
+    CGLPixelFormatAttribute attr[MAX_ATTR];
     const __GLcontextModes *c = mode;
     int numattr = 0;
     GLint vsref = 0;
@@ -59,7 +64,7 @@
      * do want the closest match for the color, depth, and accum.
      */
     attr[numattr++] = kCGLPFAClosestPolicy;
-
+    
     if(c->stereoMode) 
 	attr[numattr++] = kCGLPFAStereo;
     
@@ -92,6 +97,7 @@
     }
 
     if(c->sampleBuffers > 0) {
+	attr[numattr++] = kCGLPFAMultisample;
 	attr[numattr++] = kCGLPFASampleBuffers;
         attr[numattr++] = c->sampleBuffers;
 	attr[numattr++] = kCGLPFASamples;
@@ -100,6 +106,8 @@
     
     attr[numattr++] = 0;
 
+    assert(numattr < MAX_ATTR);
+
     error = apple_cgl.choose_pixel_format(attr, pfobj, &vsref);
 
     if(error) {