X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?p=xscreensaver;a=blobdiff_plain;f=OSX%2FXScreenSaverGLView.m;h=8d17eb64065f38298c2d1bf13204c6cb9370fb6b;hp=bc07c7fbb071301f43d1ce35cb133aff9e6c09a3;hb=c494fd2e6b3b25582375d62e40f4f5cc984ca424;hpb=07faf451b99879183ed7e909e43a0e065be1ee7f diff --git a/OSX/XScreenSaverGLView.m b/OSX/XScreenSaverGLView.m index bc07c7fb..8d17eb64 100644 --- a/OSX/XScreenSaverGLView.m +++ b/OSX/XScreenSaverGLView.m @@ -1,4 +1,4 @@ -/* xscreensaver, Copyright (c) 2006 Jamie Zawinski +/* xscreensaver, Copyright (c) 2006, 2007 Jamie Zawinski * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -20,6 +20,8 @@ #import "screenhackI.h" #import "xlockmoreI.h" +#import + /* used by the OpenGL screen savers */ extern GLXContext *init_GL (ModeInfo *); @@ -151,6 +153,17 @@ init_GL (ModeInfo *mi) GLint r = 1; aglSetInteger (ctx, AGL_SWAP_INTERVAL, &r); + // Enable multi-threading, if possible. This runs most OpenGL commands + // and GPU management on a second CPU. + { + CGLContextObj cctx = CGLGetCurrentContext(); +# define kCGLCEMPEngine 313 // #### new in MacOS 10.4.8 + XCode 2.4 + CGLError err = CGLEnable (cctx, kCGLCEMPEngine); + if (err != kCGLNoError) { + NSLog (@"enabling multi-threaded OpenGL failed: %d", err); + } + } + // Caller expects a pointer to an opaque struct... which it dereferences. // Don't ask me, it's historical... static int blort = -1; @@ -215,7 +228,7 @@ check_agl_error (const char *type) default: e = buf; sprintf (buf, "unknown AGL error %d", (int) i); break; } - NSLog (@"%s AGL error: %s\n", type, e); + NSLog (@"%s AGL error: %s", type, e); exit (1); } @@ -246,6 +259,6 @@ check_gl_error (const char *type) default: e = buf; sprintf (buf, "unknown GL error %d", (int) i); break; } - NSLog (@"%s GL error: %s\n", type, e); + NSLog (@"%s GL error: %s", type, e); exit (1); }