diff options
| author | Rye Mutt <rye@alchemyviewer.org> | 2022-10-28 18:53:34 -0400 | 
|---|---|---|
| committer | Rye Mutt <rye@alchemyviewer.org> | 2022-10-28 18:53:34 -0400 | 
| commit | 83466b301a34183a0d146d13bdc7973e02172588 (patch) | |
| tree | 73ec413c60b3e8b250003e5d7db3883e94dd9d7f | |
| parent | d628a537f52b29dc1afd1dbea562f2abf48c7e4a (diff) | |
Clean up autorelease behavior in llwindowmac and additional leaks
| -rw-r--r-- | indra/llwindow/llwindowmacosx-objc.mm | 91 | 
1 files changed, 45 insertions, 46 deletions
| diff --git a/indra/llwindow/llwindowmacosx-objc.mm b/indra/llwindow/llwindowmacosx-objc.mm index acbcd1c281..57c3d86295 100644 --- a/indra/llwindow/llwindowmacosx-objc.mm +++ b/indra/llwindow/llwindowmacosx-objc.mm @@ -49,14 +49,12 @@ void setupCocoa()  	if(!inited)  	{ -		NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; -		 -		// The following prevents the Cocoa command line parser from trying to open 'unknown' arguements as documents. -		// ie. running './secondlife -set Language fr' would cause a pop-up saying can't open document 'fr' -		// when init'ing the Cocoa App window. -		[[NSUserDefaults standardUserDefaults] setObject:@"NO" forKey:@"NSTreatUnknownArgumentsAsOpen"]; -		 -		[pool release]; +        @autoreleasepool { +            // The following prevents the Cocoa command line parser from trying to open 'unknown' arguements as documents. +            // ie. running './secondlife -set Language fr' would cause a pop-up saying can't open document 'fr' +            // when init'ing the Cocoa App window. +            [[NSUserDefaults standardUserDefaults] setObject:@"NO" forKey:@"NSTreatUnknownArgumentsAsOpen"]; +        }  		inited = true;  	} @@ -100,19 +98,18 @@ unsigned short *copyFromPBoard()  CursorRef createImageCursor(const char *fullpath, int hotspotX, int hotspotY)  { -	NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - -	// extra retain on the NSCursor since we want it to live for the lifetime of the app. -	NSCursor *cursor = -	[[[NSCursor alloc] -	  initWithImage: -	  [[[NSImage alloc] initWithContentsOfFile: -		[NSString stringWithUTF8String:fullpath] -		]autorelease] -	  hotSpot:NSMakePoint(hotspotX, hotspotY) -	  ]retain]; -	 -	[pool release]; +    NSCursor *cursor = nil; +    @autoreleasepool { +        // extra retain on the NSCursor since we want it to live for the lifetime of the app. +        cursor = +        [[[NSCursor alloc] +          initWithImage: +              [[[NSImage alloc] initWithContentsOfFile: +                    [NSString stringWithUTF8String:fullpath] +               ] autorelease] +          hotSpot:NSMakePoint(hotspotX, hotspotY) +         ] retain]; +    }  	return (CursorRef)cursor;  } @@ -179,10 +176,10 @@ OSErr releaseImageCursor(CursorRef ref)  {  	if( ref != NULL )  	{ -		NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; -		NSCursor *cursor = (NSCursor*)ref; -		[cursor release]; -		[pool release]; +        @autoreleasepool { +            NSCursor *cursor = (NSCursor*)ref; +            [cursor autorelease]; +        }  	}  	else  	{ @@ -196,10 +193,10 @@ OSErr setImageCursor(CursorRef ref)  {  	if( ref != NULL )  	{ -		NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; -		NSCursor *cursor = (NSCursor*)ref; -		[cursor set]; -		[pool release]; +        @autoreleasepool { +            NSCursor *cursor = (NSCursor*)ref; +            [cursor set]; +        }  	}  	else  	{ @@ -420,24 +417,26 @@ void requestUserAttention()  long showAlert(std::string text, std::string title, int type)  { -    NSAlert *alert = [[NSAlert alloc] init]; -     -    [alert setMessageText:[NSString stringWithCString:title.c_str() encoding:[NSString defaultCStringEncoding]]]; -    [alert setInformativeText:[NSString stringWithCString:text.c_str() encoding:[NSString defaultCStringEncoding]]]; -    if (type == 0) -    { -        [alert addButtonWithTitle:@"Okay"]; -    } else if (type == 1) -    { -        [alert addButtonWithTitle:@"Okay"]; -        [alert addButtonWithTitle:@"Cancel"]; -    } else if (type == 2) -    { -        [alert addButtonWithTitle:@"Yes"]; -        [alert addButtonWithTitle:@"No"]; +    long ret = 0; +    @autoreleasepool { +        NSAlert *alert = [[[NSAlert alloc] init] autorelease]; +         +        [alert setMessageText:[NSString stringWithCString:title.c_str() encoding:[NSString defaultCStringEncoding]]]; +        [alert setInformativeText:[NSString stringWithCString:text.c_str() encoding:[NSString defaultCStringEncoding]]]; +        if (type == 0) +        { +            [alert addButtonWithTitle:@"Okay"]; +        } else if (type == 1) +        { +            [alert addButtonWithTitle:@"Okay"]; +            [alert addButtonWithTitle:@"Cancel"]; +        } else if (type == 2) +        { +            [alert addButtonWithTitle:@"Yes"]; +            [alert addButtonWithTitle:@"No"]; +        } +        ret = [alert runModal];      } -    long ret = [alert runModal]; -    [alert dealloc];      if (ret == NSAlertFirstButtonReturn)      { | 
