http://www.jwz.org/xscreensaver/xscreensaver-5.11.tar.gz
[xscreensaver] / OSX / XScreenSaverGLView.m
index 6168e3de85ff75b340f697b6f88f9bbe8878f5cb..1ce659903e2b3ca4ab6fd8fa5337ed2f0740d6b2 100644 (file)
@@ -108,12 +108,17 @@ init_GL (ModeInfo *mi)
 
   if (!ctx) {
 
-    NSOpenGLPixelFormatAttribute attrs[] = {
-      NSOpenGLPFADoubleBuffer,
-      NSOpenGLPFAColorSize, 24,
-      NSOpenGLPFAAlphaSize, 8,
-      NSOpenGLPFADepthSize, 16,
-      0 };
+    NSOpenGLPixelFormatAttribute attrs[20];
+    int i = 0;
+    attrs[i++] = NSOpenGLPFAColorSize; attrs[i++] = 24;
+    attrs[i++] = NSOpenGLPFAAlphaSize; attrs[i++] = 8;
+    attrs[i++] = NSOpenGLPFADepthSize; attrs[i++] = 16;
+
+    if (get_boolean_resource (mi->dpy, "doubleBuffer", "DoubleBuffer"))
+      attrs[i++] = NSOpenGLPFADoubleBuffer;
+
+    attrs[i] = 0;
+
     NSOpenGLPixelFormat *pixfmt = [[NSOpenGLPixelFormat alloc] 
                                     initWithAttributes:attrs];
 
@@ -125,6 +130,7 @@ init_GL (ModeInfo *mi)
   // Sync refreshes to the vertical blanking interval
   GLint r = 1;
   [ctx setValues:&r forParameter:NSOpenGLCPSwapInterval];
+  check_gl_error ("NSOpenGLCPSwapInterval");
 
   [ctx makeCurrentContext];
   check_gl_error ("makeCurrentContext");
@@ -150,7 +156,6 @@ init_GL (ModeInfo *mi)
     }
   }
 
-
   // Caller expects a pointer to an opaque struct...  which it dereferences.
   // Don't ask me, it's historical...
   static int blort = -1;