CoreImage effect loads only with OS X 10.4.0 through 10.4.5. It crashes 10.4.6 currently.
[ITKit.git] / ITWindowEffect.m
index b58a0fb..a99f54a 100644 (file)
@@ -8,7 +8,7 @@
 
 + (NSArray *)effectClasses
 {
-    NSMutableArray *classes = [NSArray arrayWithObjects:
+    NSMutableArray *classes = [[NSArray arrayWithObjects:
         NSClassFromString(@"ITCutWindowEffect"),
         NSClassFromString(@"ITDissolveWindowEffect"),
         NSClassFromString(@"ITSlideHorizontallyWindowEffect"),
         NSClassFromString(@"ITZoomWindowEffect"),
         NSClassFromString(@"ITSpinWindowEffect"),
         NSClassFromString(@"ITSpinAndZoomWindowEffect"),
-        nil];
+        nil] mutableCopy];
        
-       NSOpenGLView *view = [[NSOpenGLView alloc] initWithFrame:NSMakeRect(0, 0, 1, 1) pixelFormat:[NSOpenGLView defaultPixelFormat]];
-       if ([view openGLContext]) {
-               NSString *string = [NSString stringWithCString:glGetString(GL_EXTENSIONS)];
-               NSRange result = [string rangeOfString:@"ARB_fragment_program"];
-               if (result.location != NSNotFound) {
-                       [classes addObject:NSClassFromString(@"ITCoreImageWindowEffect")];
+       long version;
+       if ((Gestalt(gestaltSystemVersion, &version) == noErr) && (version >= 4160) && (version < 4166)) {
+               NSOpenGLView *view = [[NSOpenGLView alloc] initWithFrame:NSMakeRect(0, 0, 1, 1) pixelFormat:[NSOpenGLView defaultPixelFormat]];
+               if ([view openGLContext]) {
+                       NSString *string = [NSString stringWithCString:glGetString(GL_EXTENSIONS)];
+                       NSRange result = [string rangeOfString:@"ARB_fragment_program"];
+                       if (result.location != NSNotFound) {
+                               [classes addObject:NSClassFromString(@"ITCoreImageWindowEffect")];
+                       }
                }
+               [view release];
        }
-       [view release];
        
-    return classes;
+    return [classes autorelease];
 }
 
 - (id)initWithWindow:(NSWindow *)window