OpenJDK / jdk / jdk
changeset 23651:e41298d0da2f
8037099: [macosx] Remove all references to GC from native OBJ-C code
Reviewed-by: anthony, serb
line wrap: on
line diff
--- a/jdk/src/macosx/native/sun/awt/AWTSurfaceLayers.m Fri Mar 14 14:23:33 2014 +0400 +++ b/jdk/src/macosx/native/sun/awt/AWTSurfaceLayers.m Fri Mar 14 16:01:04 2014 +0400 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -103,8 +103,6 @@ CALayer *windowLayer = jlong_to_ptr(windowLayerPtr); surfaceLayers = [[AWTSurfaceLayers alloc] initWithWindowLayer: windowLayer]; - CFRetain(surfaceLayers); - [surfaceLayers release]; }]; JNF_COCOA_EXIT(env);
--- a/jdk/src/macosx/native/sun/awt/AWTView.m Fri Mar 14 14:23:33 2014 +0400 +++ b/jdk/src/macosx/native/sun/awt/AWTView.m Fri Mar 14 16:01:04 2014 +0400 @@ -112,9 +112,9 @@ remoteLayer.parentLayer = parentLayer; remoteLayer.remoteLayer = NULL; remoteLayer.jrsRemoteLayer = [remoteLayer createRemoteLayerBoundTo:JRSRemotePort]; - CFRetain(remoteLayer); // REMIND + [remoteLayer retain]; // REMIND remoteLayer.frame = CGRectMake(0, 0, 720, 500); // REMIND - CFRetain(remoteLayer.jrsRemoteLayer); // REMIND + [remoteLayer.jrsRemoteLayer retain]; // REMIND int layerID = [remoteLayer.jrsRemoteLayer layerID]; NSLog(@"layer id to send = %d", layerID); sendLayerID(layerID); @@ -1275,12 +1275,9 @@ [ThreadUtilities performOnMainThreadWaiting:YES block:^(){ CALayer *windowLayer = jlong_to_ptr(windowLayerPtr); - AWTView *view = [[AWTView alloc] initWithRect:rect - platformView:cPlatformView - windowLayer:windowLayer]; - CFRetain(view); - [view release]; // GC - newView = view; + newView = [[AWTView alloc] initWithRect:rect + platformView:cPlatformView + windowLayer:windowLayer]; }]; JNF_COCOA_EXIT(env);
--- a/jdk/src/macosx/native/sun/awt/AWTWindow.m Fri Mar 14 14:23:33 2014 +0400 +++ b/jdk/src/macosx/native/sun/awt/AWTWindow.m Fri Mar 14 16:01:04 2014 +0400 @@ -791,7 +791,7 @@ contentView:contentView]; // the window is released is CPlatformWindow.nativeDispose() - if (window) CFRetain(window.nsWindow); + if (window) [window.nsWindow retain]; }]; JNF_COCOA_EXIT(env);
--- a/jdk/src/macosx/native/sun/awt/ApplicationDelegate.m Fri Mar 14 14:23:33 2014 +0400 +++ b/jdk/src/macosx/native/sun/awt/ApplicationDelegate.m Fri Mar 14 16:01:04 2014 +0400 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -255,8 +255,6 @@ [super dealloc]; } -//- (void)finalize { [super finalize]; } // GC - #pragma mark Callbacks from AppKit @@ -623,8 +621,7 @@ JNF_COCOA_ENTER(env); [ThreadUtilities performOnMainThreadWaiting:YES block:^(){ - image = [ApplicationDelegate _dockIconImage]; - CFRetain(image); + image = [[ApplicationDelegate _dockIconImage] retain]; }]; JNF_COCOA_EXIT(env);
--- a/jdk/src/macosx/native/sun/awt/CClipboard.m Fri Mar 14 14:23:33 2014 +0400 +++ b/jdk/src/macosx/native/sun/awt/CClipboard.m Fri Mar 14 16:01:04 2014 +0400 @@ -72,7 +72,6 @@ [super dealloc]; } -//- (void)finalize { [super finalize]; } - (NSData *)data { return fData;
--- a/jdk/src/macosx/native/sun/awt/CDataTransferer.m Fri Mar 14 14:23:33 2014 +0400 +++ b/jdk/src/macosx/native/sun/awt/CDataTransferer.m Fri Mar 14 16:01:04 2014 +0400 @@ -197,8 +197,6 @@ NSData *rawData = [NSData dataWithBytes:sourceBytes length:sourceSize]; NSImage *newImage = [[NSImage alloc] initWithData:rawData]; - if (newImage) CFRetain(newImage); // GC - [newImage release]; (*env)->ReleasePrimitiveArrayCritical(env, sourceData, sourceBytes, JNI_ABORT); CHECK_NULL_RETURN(newImage, NULL);
--- a/jdk/src/macosx/native/sun/awt/CDesktopPeer.m Fri Mar 14 14:23:33 2014 +0400 +++ b/jdk/src/macosx/native/sun/awt/CDesktopPeer.m Fri Mar 14 16:01:04 2014 +0400 @@ -79,7 +79,7 @@ LSApplicationParameters params = {0, flags, NULL, NULL, NULL, NULL, NULL}; status = LSOpenURLsWithRole((CFArrayRef)[NSArray arrayWithObject:url], kLSRolesAll, NULL, ¶ms, NULL, 0); - CFRelease(url); + [url release]; JNF_COCOA_EXIT(env); return status;
--- a/jdk/src/macosx/native/sun/awt/CDragSource.m Fri Mar 14 14:23:33 2014 +0400 +++ b/jdk/src/macosx/native/sun/awt/CDragSource.m Fri Mar 14 16:01:04 2014 +0400 @@ -188,7 +188,7 @@ fFormatMap = NULL; } - CFRelease(self); // GC + [self release]; } - (void)dealloc @@ -204,8 +204,6 @@ [super dealloc]; } -//- (void)finalize { [super finalize]; } - // Appropriated from Windows' awt_DataTransferer.cpp: //
--- a/jdk/src/macosx/native/sun/awt/CDragSourceContextPeer.m Fri Mar 14 14:23:33 2014 +0400 +++ b/jdk/src/macosx/native/sun/awt/CDragSourceContextPeer.m Fri Mar 14 16:01:04 2014 +0400 @@ -76,10 +76,6 @@ }]; JNF_COCOA_EXIT(env); - if (dragSource) { - CFRetain(dragSource); // GC - [dragSource release]; - } return ptr_to_jlong(dragSource); }
--- a/jdk/src/macosx/native/sun/awt/CDropTarget.m Fri Mar 14 14:23:33 2014 +0400 +++ b/jdk/src/macosx/native/sun/awt/CDropTarget.m Fri Mar 14 16:01:04 2014 +0400 @@ -169,7 +169,7 @@ fDropTargetContextPeer = NULL; } - CFRelease(self); + [self release]; } - (void)dealloc @@ -185,7 +185,6 @@ [super dealloc]; } -//- (void)finalize { [super finalize]; } - (NSInteger) getDraggingSequenceNumber { @@ -722,10 +721,6 @@ dropTarget = [[CDropTarget alloc] init:jdroptarget component:jcomponent peer:jpeer control:controlObj]; JNF_COCOA_EXIT(env); - if (dropTarget) { - CFRetain(dropTarget); // GC - [dropTarget release]; - } return ptr_to_jlong(dropTarget); }
--- a/jdk/src/macosx/native/sun/awt/CFileDialog.m Fri Mar 14 14:23:33 2014 +0400 +++ b/jdk/src/macosx/native/sun/awt/CFileDialog.m Fri Mar 14 16:01:04 2014 +0400 @@ -88,7 +88,6 @@ [super dealloc]; } -//- (void)finalize { [super finalize]; } - (void)safeSaveOrLoad { NSSavePanel *thePanel = nil; @@ -168,9 +167,9 @@ } // ask the file filter up in Java - CFStringRef filePath = CFURLCopyFileSystemPath((CFURLRef)url, kCFURLPOSIXPathStyle); - BOOL shouldEnableFile = [self askFilenameFilter:(NSString *)filePath]; - CFRelease(filePath); + NSString* filePath = (NSString*)CFURLCopyFileSystemPath((CFURLRef)url, kCFURLPOSIXPathStyle); + BOOL shouldEnableFile = [self askFilenameFilter:filePath]; + [filePath release]; return shouldEnableFile; }
--- a/jdk/src/macosx/native/sun/awt/CGraphicsEnv.m Fri Mar 14 14:23:33 2014 +0400 +++ b/jdk/src/macosx/native/sun/awt/CGraphicsEnv.m Fri Mar 14 16:01:04 2014 +0400 @@ -145,8 +145,7 @@ JNF_COCOA_ENTER(env); - JNFWeakJObjectWrapper *wrapper = [JNFWeakJObjectWrapper wrapperWithJObject:this withEnv:env]; - CFRetain(wrapper); // pin from ObjC-GC + JNFWeakJObjectWrapper *wrapper = [[JNFWeakJObjectWrapper wrapperWithJObject:this withEnv:env] retain]; /* Register the callback */ if (CGDisplayRegisterReconfigurationCallback(&displaycb_handle, wrapper) != kCGErrorSuccess) { @@ -186,8 +185,7 @@ } [wrapper setJObject:NULL withEnv:env]; // more efficiant to pre-clear - - CFRelease(wrapper); + [wrapper release]; JNF_COCOA_EXIT(env); }
--- a/jdk/src/macosx/native/sun/awt/CImage.m Fri Mar 14 14:23:33 2014 +0400 +++ b/jdk/src/macosx/native/sun/awt/CImage.m Fri Mar 14 16:01:04 2014 +0400 @@ -115,14 +115,9 @@ NSBitmapImageRep* imageRep = CImage_CreateImageRep(env, buffer, width, height); if (imageRep) { - NSImage *nsImage = [[NSImage alloc] initWithSize:NSMakeSize(width, height)]; + NSImage *nsImage = [[[NSImage alloc] initWithSize:NSMakeSize(width, height)] retain]; [nsImage addRepresentation:imageRep]; [imageRep release]; - - if (nsImage != nil) { - CFRetain(nsImage); // GC - } - result = ptr_to_jlong(nsImage); } @@ -165,13 +160,8 @@ (*env)->ReleaseIntArrayElements(env, widths, ws, JNI_ABORT); } if ([reps count]) { - NSImage *nsImage = [[NSImage alloc] initWithSize:NSMakeSize(0, 0)]; + NSImage *nsImage = [[[NSImage alloc] initWithSize:NSMakeSize(0, 0)] retain]; [nsImage addRepresentations: reps]; - - if (nsImage != nil) { - CFRetain(nsImage); // GC - } - result = ptr_to_jlong(nsImage); } @@ -194,8 +184,7 @@ IconRef iconRef; if (noErr == GetIconRef(kOnSystemDisk, kSystemIconsCreator, selector, &iconRef)) { - image = [[NSImage alloc] initWithIconRef:iconRef]; - if (image) CFRetain(image); // GC + image = [[[NSImage alloc] initWithIconRef:iconRef] retain]; ReleaseIconRef(iconRef); } @@ -217,8 +206,7 @@ JNF_COCOA_ENTER(env); NSString *path = JNFNormalizedNSStringForPath(env, file); - image = [[NSImage alloc] initByReferencingFile:path]; - if (image) CFRetain(image); // GC + image = [[[NSImage alloc] initByReferencingFile:path] retain]; JNF_COCOA_EXIT(env); @@ -239,9 +227,8 @@ NSString *path = JNFNormalizedNSStringForPath(env, file); [ThreadUtilities performOnMainThreadWaiting:YES block:^(){ - image = [[NSWorkspace sharedWorkspace] iconForFile:path]; + image = [[[NSWorkspace sharedWorkspace] iconForFile:path] retain]; [image setScalesWhenResized:TRUE]; - if (image) CFRetain(image); // GC }]; JNF_COCOA_EXIT(env); @@ -261,8 +248,7 @@ JNF_COCOA_ENTER(env); - image = [NSImage imageNamed:JNFJavaToNSString(env, name)]; - if (image) CFRetain(image); // GC + image = [[NSImage imageNamed:JNFJavaToNSString(env, name)] retain]; JNF_COCOA_EXIT(env); @@ -435,4 +421,4 @@ JNF_COCOA_EXIT(env); return jreturnArray; -} \ No newline at end of file +}
--- a/jdk/src/macosx/native/sun/awt/CMenu.m Fri Mar 14 14:23:33 2014 +0400 +++ b/jdk/src/macosx/native/sun/awt/CMenu.m Fri Mar 14 16:01:04 2014 +0400 @@ -52,7 +52,6 @@ fMenu = nil; [super dealloc]; } -//- (void)finalize { [super finalize]; } - (void)addJavaSubmenu:(CMenu *)submenu { [ThreadUtilities performOnMainThread:@selector(addNativeItem_OnAppKitThread:) on:self withObject:submenu waitUntilDone:YES]; @@ -169,10 +168,6 @@ // Add it to the parent menu [((CMenu *)jlong_to_ptr(parentMenu)) addJavaSubmenu: aCMenu]; - if (aCMenu) { - CFRetain(aCMenu); // GC - [aCMenu release]; - } JNF_COCOA_EXIT(env); @@ -209,10 +204,6 @@ [parent javaSetHelpMenu: aCMenu]; } - if (aCMenu) { - CFRetain(aCMenu); // GC - [aCMenu release]; - } JNF_COCOA_EXIT(env); return ptr_to_jlong(aCMenu); } @@ -275,13 +266,9 @@ NSMenu* nsMenu = NULL; JNF_COCOA_ENTER(env); - nsMenu = [((CMenu *)jlong_to_ptr(menuObject)) menu]; + // Strong retain this menu; it'll get released in Java_apple_laf_ScreenMenu_addMenuListeners + nsMenu = [[((CMenu *)jlong_to_ptr(menuObject)) menu] retain]; JNF_COCOA_EXIT(env); - // Strong retain this menu; it'll get released in Java_apple_laf_ScreenMenu_addMenuListeners - if (nsMenu) { - CFRetain(nsMenu); // GC - } - return ptr_to_jlong(nsMenu); }
--- a/jdk/src/macosx/native/sun/awt/CMenuBar.m Fri Mar 14 14:23:33 2014 +0400 +++ b/jdk/src/macosx/native/sun/awt/CMenuBar.m Fri Mar 14 16:01:04 2014 +0400 @@ -405,10 +405,6 @@ JNF_COCOA_EXIT(env); - if (aCMenuBar) { - CFRetain(aCMenuBar); // GC - [aCMenuBar release]; - } return ptr_to_jlong(aCMenuBar); }
--- a/jdk/src/macosx/native/sun/awt/CMenuComponent.m Fri Mar 14 14:23:33 2014 +0400 +++ b/jdk/src/macosx/native/sun/awt/CMenuComponent.m Fri Mar 14 16:01:04 2014 +0400 @@ -51,8 +51,7 @@ fPeer = NULL; [self cleanup]; - - CFRelease(self); // GC + [self release]; } // The method is used by all subclasses, since the process of the creation @@ -64,9 +63,6 @@ [argValue addObject: aCMenuItem]; } -//-(void) dealloc { [super dealloc]; } -//- (void)finalize { [super finalize]; } - @end /*
--- a/jdk/src/macosx/native/sun/awt/CMenuItem.m Fri Mar 14 14:23:33 2014 +0400 +++ b/jdk/src/macosx/native/sun/awt/CMenuItem.m Fri Mar 14 16:01:04 2014 +0400 @@ -420,11 +420,6 @@ // setLabel will be called after creation completes. - if (aCMenuItem) { - CFRetain(aCMenuItem); // GC - [aCMenuItem release]; - } - JNF_COCOA_EXIT(env); return ptr_to_jlong(aCMenuItem); }
--- a/jdk/src/macosx/native/sun/awt/CPopupMenu.m Fri Mar 14 14:23:33 2014 +0400 +++ b/jdk/src/macosx/native/sun/awt/CPopupMenu.m Fri Mar 14 16:01:04 2014 +0400 @@ -66,8 +66,6 @@ [ThreadUtilities performOnMainThreadWaiting:YES block:^(){ aCPopupMenu = [[CPopupMenu alloc] initWithPeer:cPeerObjGlobal]; - CFRetain(aCPopupMenu); - [aCPopupMenu release]; }]; JNF_COCOA_EXIT(env);
--- a/jdk/src/macosx/native/sun/awt/CPrinterJob.m Fri Mar 14 14:23:33 2014 +0400 +++ b/jdk/src/macosx/native/sun/awt/CPrinterJob.m Fri Mar 14 16:01:04 2014 +0400 @@ -469,8 +469,6 @@ // safety is assured by the java side of this call. NSPrintInfo* printInfo = createDefaultNSPrintInfo(env, NULL); - if (printInfo) CFRetain(printInfo); // GC - [printInfo release]; result = ptr_to_jlong(printInfo); @@ -490,7 +488,7 @@ if (nsPrintInfo != -1) { NSPrintInfo* printInfo = (NSPrintInfo*)jlong_to_ptr(nsPrintInfo); - if (printInfo) CFRelease(printInfo); // GC + [printInfo release]; } JNF_COCOA_EXIT(env); }
--- a/jdk/src/macosx/native/sun/awt/CSystemColors.m Fri Mar 14 14:23:33 2014 +0400 +++ b/jdk/src/macosx/native/sun/awt/CSystemColors.m Fri Mar 14 16:01:04 2014 +0400 @@ -75,7 +75,7 @@ sColors = (NSColor**)malloc(sizeof(NSColor*) * java_awt_SystemColor_NUM_COLORS); } else { for (i = 0; i < java_awt_SystemColor_NUM_COLORS; i++) { - if (sColors[i] != NULL) CFRelease(sColors[i]); // GC + if (sColors[i] != NULL) [sColors[i] release]; } } @@ -108,14 +108,14 @@ sColors[java_awt_SystemColor_INFO_TEXT] = [NSColor textColor]; for (i = 0; i < java_awt_SystemColor_NUM_COLORS; i++) { - if (sColors[i] != NULL) CFRetain(sColors[i]); // GC + [sColors[i] retain]; } if (appleColors == nil) { appleColors = (NSColor**)malloc(sizeof(NSColor*) * sun_lwawt_macosx_LWCToolkit_NUM_APPLE_COLORS); } else { for (i = 0; i < sun_lwawt_macosx_LWCToolkit_NUM_APPLE_COLORS; i++) { - if (appleColors[i] != NULL) CFRelease(appleColors[i]); // GC + if (appleColors[i] != NULL) [appleColors[i] release]; } } @@ -124,7 +124,7 @@ appleColors[sun_lwawt_macosx_LWCToolkit_INACTIVE_SELECTION_FOREGROUND_COLOR] = [NSColor controlDarkShadowColor]; for (i = 0; i < sun_lwawt_macosx_LWCToolkit_NUM_APPLE_COLORS; i++) { - if (appleColors[i] != NULL) CFRetain(appleColors[i]); // GC + [appleColors[i] retain]; } }
--- a/jdk/src/macosx/native/sun/awt/ImageSurfaceData.m Fri Mar 14 14:23:33 2014 +0400 +++ b/jdk/src/macosx/native/sun/awt/ImageSurfaceData.m Fri Mar 14 16:01:04 2014 +0400 @@ -1497,7 +1497,7 @@ } if (isdo->nsRef) { - CFRelease(isdo->nsRef); // GC + [isdo->nsRef release]; isdo->nsRef = nil; }
--- a/jdk/src/macosx/native/sun/awt/JavaAccessibilityAction.m Fri Mar 14 14:23:33 2014 +0400 +++ b/jdk/src/macosx/native/sun/awt/JavaAccessibilityAction.m Fri Mar 14 16:01:04 2014 +0400 @@ -55,20 +55,6 @@ [super dealloc]; } -- (void)finalize -{ - JNIEnv *env = [ThreadUtilities getJNIEnvUncached]; - - JNFDeleteGlobalRef(env, fAccessibleAction); - fAccessibleAction = NULL; - - JNFDeleteGlobalRef(env, fComponent); - fComponent = NULL; - - [super finalize]; -} - - - (NSString *)getDescription { static JNF_STATIC_MEMBER_CACHE(jm_getAccessibleActionDescription, sjc_CAccessibility, "getAccessibleActionDescription", "(Ljavax/accessibility/AccessibleAction;ILjava/awt/Component;)Ljava/lang/String;"); @@ -116,19 +102,6 @@ [super dealloc]; } -- (void)finalize -{ - JNIEnv *env = [ThreadUtilities getJNIEnvUncached]; - - JNFDeleteGlobalRef(env, fTabGroup); - fTabGroup = NULL; - - JNFDeleteGlobalRef(env, fComponent); - fComponent = NULL; - - [super finalize]; -} - - (NSString *)getDescription { return @"click";
--- a/jdk/src/macosx/native/sun/awt/JavaComponentAccessibility.m Fri Mar 14 14:23:33 2014 +0400 +++ b/jdk/src/macosx/native/sun/awt/JavaComponentAccessibility.m Fri Mar 14 16:01:04 2014 +0400 @@ -192,20 +192,6 @@ [super dealloc]; } -- (void)finalize -{ - [self unregisterFromCocoaAXSystem]; - - JNIEnv *env = [ThreadUtilities getJNIEnvUncached]; - - JNFDeleteGlobalRef(env, fAccessible); - fAccessible = NULL; - - JNFDeleteGlobalRef(env, fComponent); - fComponent = NULL; - - [super finalize]; -} - (void)postValueChanged { @@ -355,8 +341,8 @@ // must init freshly -alloc'd object [newChild initWithParent:parent withEnv:env withAccessible:jCAX withIndex:index withView:view withJavaRole:javaRole]; // must init new instance - // must hard CFRetain() pointer poked into Java object - CFRetain(newChild); + // must hard retain pointer poked into Java object + [newChild retain]; JNFSetLongField(env, jCAX, jf_ptr, ptr_to_jlong(newChild)); // return autoreleased instance @@ -1397,18 +1383,6 @@ [super dealloc]; } -- (void)finalize -{ - JNIEnv *env = [ThreadUtilities getJNIEnvUncached]; - - if (fTabGroupAxContext != NULL) { - JNFDeleteGlobalRef(env, fTabGroupAxContext); - fTabGroupAxContext = NULL; - } - - [super finalize]; -} - - (id)accessibilityValueAttribute { JNIEnv *env = [ThreadUtilities getJNIEnv];
--- a/jdk/src/macosx/native/sun/awt/LWCToolkit.m Fri Mar 14 14:23:33 2014 +0400 +++ b/jdk/src/macosx/native/sun/awt/LWCToolkit.m Fri Mar 14 16:01:04 2014 +0400 @@ -291,17 +291,15 @@ { AWT_ASSERT_APPKIT_THREAD; - AWTRunLoopObject *o = nil; + jlong result; +JNF_COCOA_ENTER(env); // We double retain because this object is owned by both main thread and "other" thread // We release in both doAWTRunLoop and stopAWTRunLoop - o = [[AWTRunLoopObject alloc] init]; - if (o) { - CFRetain(o); // GC - CFRetain(o); // GC - [o release]; - } - return ptr_to_jlong(o); + result = ptr_to_jlong([[[AWTRunLoopObject alloc] init] retain]); +JNF_COCOA_EXIT(env); + + return result; } /* @@ -336,10 +334,7 @@ } } - - - CFRelease(mediatorObject); - + [mediatorObject release]; JNF_COCOA_EXIT(env); } @@ -357,7 +352,7 @@ [ThreadUtilities performOnMainThread:@selector(endRunLoop) on:mediatorObject withObject:nil waitUntilDone:NO]; - CFRelease(mediatorObject); + [mediatorObject release]; JNF_COCOA_EXIT(env); }
--- a/jdk/src/macosx/native/sun/awt/PrintModel.m Fri Mar 14 14:23:33 2014 +0400 +++ b/jdk/src/macosx/native/sun/awt/PrintModel.m Fri Mar 14 16:01:04 2014 +0400 @@ -48,7 +48,6 @@ [super dealloc]; } -//- (void)finalize { [super finalize]; } - (BOOL)runPageSetup { __block BOOL fResult = NO; @@ -86,8 +85,8 @@ fResult = [self safePrintLoop:printerView withEnv:env]; } else { // Retain these so they don't go away while we're in Java - CFRetain(self); // GC - if (printerView) CFRetain(printerView); // GC + [self retain]; + [printerView retain]; static JNF_CLASS_CACHE(jc_CPrinterJob, "sun/lwawt/macosx/CPrinterJob"); static JNF_STATIC_MEMBER_CACHE(jm_detachPrintLoop, jc_CPrinterJob, "detachPrintLoop", "(JJ)V"); @@ -134,8 +133,8 @@ [model safePrintLoop:arg withEnv:env]; // These are to match the retains in runPrintLoopWithView: - if (model) CFRelease(model); // GC - if (arg) CFRelease(arg); // GC + [model release]; + [arg release]; JNF_COCOA_EXIT(env); }