diff options
Diffstat (limited to 'macosx/PcsxrMemoryObject.m')
| -rwxr-xr-x | macosx/PcsxrMemoryObject.m | 35 |
1 files changed, 31 insertions, 4 deletions
diff --git a/macosx/PcsxrMemoryObject.m b/macosx/PcsxrMemoryObject.m index b48d13ac..e85145b2 100755 --- a/macosx/PcsxrMemoryObject.m +++ b/macosx/PcsxrMemoryObject.m @@ -22,8 +22,7 @@ NSString *const memoryAnimateTimerKey = @"PCSXR Memory Card Image Animate"; @property (readwrite, retain, setter = setJapaneseName:) NSString *sjisName; @property (readwrite, retain, setter = setTheMemName:) NSString *memName; @property (readwrite, retain, setter = setTheMemId:) NSString *memID; -@property (readwrite, retain) NSImage *memImage; -@property (readwrite, setter = setIconCount:) int memIconCount; +@property (readwrite, retain, setter = setTheMemImage:) NSImage *memImage; @property (readwrite, getter = isNotDeleted, setter = setIsNotDeleted:) BOOL notDeleted; @property (readwrite, setter = setTheMemFlags:) unsigned char memFlags; @property (retain) NSArray *memImages; @@ -86,6 +85,8 @@ NSString *const memoryAnimateTimerKey = @"PCSXR Memory Card Image Animate"; self.memImages = [PcsxrMemoryObject imagesFromMcd:infoBlock]; if ([memImages count] == 0) { self.memImage = [PcsxrMemoryObject blankImage]; + } else if ([memImages count] == 1) { + self.memImage = [memImages objectAtIndex:0]; } else { self.memImage = [self.memImages objectAtIndex:0]; [[NSNotificationCenter defaultCenter] addObserverForName:memoryAnimateTimerKey object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification *note) { @@ -98,7 +99,6 @@ NSString *const memoryAnimateTimerKey = @"PCSXR Memory Card Image Animate"; } self.memName = [NSString stringWithCString:infoBlock->Name encoding:NSASCIIStringEncoding]; self.memID = [NSString stringWithCString:infoBlock->ID encoding:NSASCIIStringEncoding]; - self.memIconCount = infoBlock->IconCount; self.memFlags = infoBlock->Flags; if ((infoBlock->Flags & 0xF0) == 0xA0) { if ((infoBlock->Flags & 0xF) >= 1 && @@ -117,11 +117,38 @@ NSString *const memoryAnimateTimerKey = @"PCSXR Memory Card Image Animate"; @synthesize englishName; @synthesize sjisName; @synthesize memImage; +- (void)setTheMemImage:(NSImage *)theMemImage +{ + if (memImage == theMemImage) { + return; + } + //This is the only setter that is being watched AND changed. + [self willChangeValueForKey:@"memImage"]; +#if __has_feature(objc_arc) + memImage = theMemImage; +#else + NSImage *tmpImage = memImage; + memImage = [theMemImage retain]; + [tmpImage release]; +#endif + [self didChangeValueForKey:@"memImage"]; +} +- (NSImage*)memImage +{ + @synchronized(memImage) + { + return memImage; + } +} + @synthesize notDeleted; @synthesize memFlags; @synthesize memName; @synthesize memID; -@synthesize memIconCount; +- (int)memIconCount +{ + return [memImages count]; +} @synthesize memImages; - (void)dealloc |
