Cocoa Port:

- Fix regression from r4533 where the UI elements in the Cheat Manager window wouldn't update in sync with ROM loading/unloading.
- Do a bunch of code cleanup.
This commit is contained in:
rogerman 2013-02-15 02:37:14 +00:00
parent 4dd70a0120
commit 1055a9235f
6 changed files with 1199 additions and 1394 deletions

File diff suppressed because it is too large Load Diff

View File

@ -243,9 +243,8 @@
}
NSURL *selectedFile = nil;
NSInteger buttonClicked = NSFileHandlingPanelCancelButton;
NSOpenPanel *panel = [NSOpenPanel openPanel];
NSOpenPanel *panel = [NSOpenPanel openPanel];
[panel setCanChooseDirectories:NO];
[panel setCanChooseFiles:YES];
[panel setResolvesAliases:YES];
@ -257,9 +256,9 @@
// is deprecated in Mac OS X v10.6.
#if MAC_OS_X_VERSION_MAX_ALLOWED > MAC_OS_X_VERSION_10_5
[panel setAllowedFileTypes:fileTypes];
buttonClicked = [panel runModal];
const NSInteger buttonClicked = [panel runModal];
#else
buttonClicked = [panel runModalForDirectory:nil file:nil types:fileTypes];
const NSInteger buttonClicked = [panel runModalForDirectory:nil file:nil types:fileTypes];
#endif
if (buttonClicked == NSFileHandlingPanelOKButton)
@ -269,13 +268,9 @@
{
return;
}
[self handleLoadRom:selectedFile];
}
else
{
return;
}
[self handleLoadRom:selectedFile];
}
- (IBAction) closeRom:(id)sender
@ -285,11 +280,9 @@
- (IBAction) openEmuSaveState:(id)sender
{
BOOL result = NO;
NSURL *selectedFile = nil;
NSInteger buttonClicked = NSFileHandlingPanelCancelButton;
NSOpenPanel *panel = [NSOpenPanel openPanel];
NSOpenPanel *panel = [NSOpenPanel openPanel];
[panel setCanChooseDirectories:NO];
[panel setCanChooseFiles:YES];
[panel setResolvesAliases:YES];
@ -301,9 +294,9 @@
// is deprecated in Mac OS X v10.6.
#if MAC_OS_X_VERSION_MAX_ALLOWED > MAC_OS_X_VERSION_10_5
[panel setAllowedFileTypes:fileTypes];
buttonClicked = [panel runModal];
const NSInteger buttonClicked = [panel runModal];
#else
buttonClicked = [panel runModalForDirectory:nil file:nil types:fileTypes];
const NSInteger buttonClicked = [panel runModalForDirectory:nil file:nil types:fileTypes];
#endif
if (buttonClicked == NSFileHandlingPanelOKButton)
@ -321,35 +314,34 @@
[self pauseCore];
result = [CocoaDSFile loadState:selectedFile];
if (result == NO)
const BOOL isStateLoaded = [CocoaDSFile loadState:selectedFile];
if (!isStateLoaded)
{
[self setStatusText:NSSTRING_STATUS_SAVESTATE_LOADING_FAILED];
[self restoreCoreState];
return;
}
[self setCurrentSaveStateURL:selectedFile];
[self restoreCoreState];
[self setStatusText:NSSTRING_STATUS_SAVESTATE_LOADED];
isSaveStateEdited = YES;
for (NSWindow *theWindow in windowList)
{
[theWindow setDocumentEdited:isSaveStateEdited];
}
[self setStatusText:NSSTRING_STATUS_SAVESTATE_LOADED];
[self restoreCoreState];
[self setCurrentSaveStateURL:selectedFile];
}
- (IBAction) saveEmuSaveState:(id)sender
{
BOOL result = NO;
if (isSaveStateEdited && [self currentSaveStateURL] != nil)
{
[self pauseCore];
result = [CocoaDSFile saveState:[self currentSaveStateURL]];
if (result == NO)
const BOOL isStateSaved = [CocoaDSFile saveState:[self currentSaveStateURL]];
if (!isStateSaved)
{
[self setStatusText:NSSTRING_STATUS_SAVESTATE_SAVING_FAILED];
return;
@ -361,8 +353,8 @@
[theWindow setDocumentEdited:isSaveStateEdited];
}
[self restoreCoreState];
[self setStatusText:NSSTRING_STATUS_SAVESTATE_SAVED];
[self restoreCoreState];
}
else
{
@ -372,10 +364,7 @@
- (IBAction) saveEmuSaveStateAs:(id)sender
{
BOOL result = NO;
NSInteger buttonClicked = NSFileHandlingPanelCancelButton;
NSSavePanel *panel = [NSSavePanel savePanel];
[panel setCanCreateDirectories:YES];
[panel setTitle:NSSTRING_TITLE_SAVE_STATE_FILE_PANEL];
@ -388,63 +377,61 @@
[panel setRequiredFileType:@FILE_EXT_SAVE_STATE];
#endif
buttonClicked = [panel runModal];
const NSInteger buttonClicked = [panel runModal];
if(buttonClicked == NSOKButton)
{
[self pauseCore];
NSURL *saveFileURL = [panel URL];
result = [CocoaDSFile saveState:saveFileURL];
if (result == NO)
[self pauseCore];
const BOOL isStateSaved = [CocoaDSFile saveState:saveFileURL];
if (!isStateSaved)
{
[self setStatusText:NSSTRING_STATUS_SAVESTATE_SAVING_FAILED];
return;
}
[self setCurrentSaveStateURL:saveFileURL];
[self restoreCoreState];
[self setStatusText:NSSTRING_STATUS_SAVESTATE_SAVED];
isSaveStateEdited = YES;
for (NSWindow *theWindow in windowList)
{
[theWindow setDocumentEdited:isSaveStateEdited];
}
[self setStatusText:NSSTRING_STATUS_SAVESTATE_SAVED];
[self restoreCoreState];
[self setCurrentSaveStateURL:saveFileURL];
}
}
- (IBAction) revertEmuSaveState:(id)sender
{
BOOL result = NO;
if (isSaveStateEdited && [self currentSaveStateURL] != nil)
if (!isSaveStateEdited || [self currentSaveStateURL] == nil)
{
[self pauseCore];
result = [CocoaDSFile loadState:[self currentSaveStateURL]];
if (result == NO)
{
[self setStatusText:NSSTRING_STATUS_SAVESTATE_REVERTING_FAILED];
return;
}
isSaveStateEdited = YES;
for (NSWindow *theWindow in windowList)
{
[theWindow setDocumentEdited:isSaveStateEdited];
}
[self restoreCoreState];
[self setStatusText:NSSTRING_STATUS_SAVESTATE_REVERTED];
return;
}
[self pauseCore];
const BOOL isStateLoaded = [CocoaDSFile loadState:[self currentSaveStateURL]];
if (!isStateLoaded)
{
[self setStatusText:NSSTRING_STATUS_SAVESTATE_REVERTING_FAILED];
return;
}
isSaveStateEdited = YES;
for (NSWindow *theWindow in windowList)
{
[theWindow setDocumentEdited:isSaveStateEdited];
}
[self setStatusText:NSSTRING_STATUS_SAVESTATE_REVERTED];
[self restoreCoreState];
}
- (IBAction) loadEmuSaveStateSlot:(id)sender
{
BOOL result = NO;
NSInteger i = [CocoaDSUtil getIBActionSenderTag:sender];
NSString *saveStatePath = [[CocoaDSFile saveStateURL] path];
if (saveStatePath == nil)
{
@ -452,13 +439,14 @@
return;
}
if (i < 0 || i > MAX_SAVESTATE_SLOTS)
const NSInteger slotNumber = [CocoaDSUtil getIBActionSenderTag:sender];
if (slotNumber < 0 || slotNumber > MAX_SAVESTATE_SLOTS)
{
return;
}
NSURL *currentRomURL = [[self currentRom] fileURL];
NSString *fileName = [CocoaDSFile saveSlotFileName:currentRomURL slotNumber:(NSUInteger)(i + 1)];
NSString *fileName = [CocoaDSFile saveSlotFileName:currentRomURL slotNumber:(NSUInteger)(slotNumber + 1)];
if (fileName == nil)
{
return;
@ -466,21 +454,14 @@
[self pauseCore];
result = [CocoaDSFile loadState:[NSURL fileURLWithPath:[saveStatePath stringByAppendingPathComponent:fileName]]];
if (result == NO)
{
[self setStatusText:NSSTRING_STATUS_SAVESTATE_LOADING_FAILED];
}
const BOOL isStateLoaded = [CocoaDSFile loadState:[NSURL fileURLWithPath:[saveStatePath stringByAppendingPathComponent:fileName]]];
[self setStatusText:(isStateLoaded) ? NSSTRING_STATUS_SAVESTATE_LOADED : NSSTRING_STATUS_SAVESTATE_LOADING_FAILED];
[self restoreCoreState];
[self setStatusText:NSSTRING_STATUS_SAVESTATE_LOADED];
}
- (IBAction) saveEmuSaveStateSlot:(id)sender
{
BOOL result = NO;
NSInteger i = [CocoaDSUtil getIBActionSenderTag:sender];
NSString *saveStatePath = [[CocoaDSFile saveStateURL] path];
if (saveStatePath == nil)
{
@ -488,20 +469,21 @@
return;
}
result = [CocoaDSFile createUserAppSupportDirectory:@"States"];
if (result == NO)
const BOOL isDirectoryCreated = [CocoaDSFile createUserAppSupportDirectory:@"States"];
if (!isDirectoryCreated)
{
[self setStatusText:NSSTRING_STATUS_CANNOT_CREATE_SAVE_DIRECTORY];
return;
}
if (i < 0 || i > MAX_SAVESTATE_SLOTS)
const NSInteger slotNumber = [CocoaDSUtil getIBActionSenderTag:sender];
if (slotNumber < 0 || slotNumber > MAX_SAVESTATE_SLOTS)
{
return;
}
NSURL *currentRomURL = [[self currentRom] fileURL];
NSString *fileName = [CocoaDSFile saveSlotFileName:currentRomURL slotNumber:(NSUInteger)(i + 1)];
NSString *fileName = [CocoaDSFile saveSlotFileName:currentRomURL slotNumber:(NSUInteger)(slotNumber + 1)];
if (fileName == nil)
{
return;
@ -509,23 +491,17 @@
[self pauseCore];
result = [CocoaDSFile saveState:[NSURL fileURLWithPath:[saveStatePath stringByAppendingPathComponent:fileName]]];
if (result == NO)
{
[self setStatusText:NSSTRING_STATUS_SAVESTATE_SAVING_FAILED];
return;
}
const BOOL isStateSaved = [CocoaDSFile saveState:[NSURL fileURLWithPath:[saveStatePath stringByAppendingPathComponent:fileName]]];
[self setStatusText:(isStateSaved) ? NSSTRING_STATUS_SAVESTATE_SAVED : NSSTRING_STATUS_SAVESTATE_SAVING_FAILED];
[self restoreCoreState];
[self setStatusText:NSSTRING_STATUS_SAVESTATE_SAVED];
}
- (IBAction) importRomSave:(id)sender
{
NSURL *selectedFile = nil;
NSInteger buttonClicked = NSFileHandlingPanelCancelButton;
NSOpenPanel *panel = [NSOpenPanel openPanel];
NSOpenPanel *panel = [NSOpenPanel openPanel];
[panel setCanChooseDirectories:NO];
[panel setCanChooseFiles:YES];
[panel setResolvesAliases:YES];
@ -537,9 +513,9 @@
// is deprecated in Mac OS X v10.6.
#if MAC_OS_X_VERSION_MAX_ALLOWED > MAC_OS_X_VERSION_10_5
[panel setAllowedFileTypes:fileTypes];
buttonClicked = [panel runModal];
const NSInteger buttonClicked = [panel runModal];
#else
buttonClicked = [panel runModalForDirectory:nil file:nil types:fileTypes];
const NSInteger buttonClicked = [panel runModalForDirectory:nil file:nil types:fileTypes];
#endif
if (buttonClicked == NSFileHandlingPanelOKButton)
@ -549,47 +525,29 @@
{
return;
}
const BOOL isRomSaveImported = [CocoaDSFile importRomSave:selectedFile];
[self setStatusText:(isRomSaveImported) ? NSSTRING_STATUS_ROM_SAVE_IMPORTED : NSSTRING_STATUS_ROM_SAVE_IMPORT_FAILED];
}
else
{
return;
}
BOOL result = [CocoaDSFile importRomSave:selectedFile];
if (!result)
{
[self setStatusText:NSSTRING_STATUS_ROM_SAVE_IMPORT_FAILED];
return;
}
[self setStatusText:NSSTRING_STATUS_ROM_SAVE_IMPORTED];
}
- (IBAction) exportRomSave:(id)sender
{
[self pauseCore];
BOOL result = NO;
NSInteger buttonClicked;
NSSavePanel *panel = [NSSavePanel savePanel];
[panel setTitle:NSSTRING_TITLE_EXPORT_ROM_SAVE_PANEL];
[panel setCanCreateDirectories:YES];
[panel setAccessoryView:exportRomSavePanelAccessoryView];
buttonClicked = [panel runModal];
const NSInteger buttonClicked = [panel runModal];
if(buttonClicked == NSOKButton)
{
NSURL *romSaveURL = [CocoaDSFile fileURLFromRomURL:[[self currentRom] fileURL] toKind:@"ROM Save"];
if (romSaveURL != nil)
{
result = [CocoaDSFile exportRomSaveToURL:[panel URL] romSaveURL:romSaveURL fileType:selectedExportRomSaveID];
if (result == NO)
{
[self setStatusText:NSSTRING_STATUS_ROM_SAVE_EXPORT_FAILED];
return;
}
[self setStatusText:NSSTRING_STATUS_ROM_SAVE_EXPORTED];
const BOOL isRomSaveExported = [CocoaDSFile exportRomSaveToURL:[panel URL] romSaveURL:romSaveURL fileType:selectedExportRomSaveID];
[self setStatusText:(isRomSaveExported) ? NSSTRING_STATUS_ROM_SAVE_EXPORTED : NSSTRING_STATUS_ROM_SAVE_EXPORT_FAILED];
}
}
@ -620,35 +578,37 @@
- (IBAction) resetCore:(id)sender
{
if ([self currentRom] == nil)
{
return;
}
CocoaDSCore *cdsCore = (CocoaDSCore *)[cdsCoreController content];
if ([self currentRom] != nil)
[self setStatusText:NSSTRING_STATUS_EMULATOR_RESETTING];
[self setIsWorking:YES];
for (NSWindow *theWindow in windowList)
{
[theWindow displayIfNeeded];
}
[cdsCore reset];
if ([cdsCore coreState] == CORESTATE_PAUSE)
{
[self setStatusText:NSSTRING_STATUS_EMULATOR_RESETTING];
[self setIsWorking:YES];
for (NSWindow *theWindow in windowList)
{
[theWindow displayIfNeeded];
}
[cdsCore reset];
if ([cdsCore coreState] == CORESTATE_PAUSE)
{
for (NSWindow *theWindow in windowList)
{
[[(EmuWindowDelegate *)[theWindow delegate] dispViewDelegate] setViewToWhite];
}
}
[self setStatusText:NSSTRING_STATUS_EMULATOR_RESET];
[self setIsWorking:NO];
for (NSWindow *theWindow in windowList)
{
[theWindow displayIfNeeded];
[[(EmuWindowDelegate *)[theWindow delegate] dispViewDelegate] setViewToWhite];
}
}
[self setStatusText:NSSTRING_STATUS_EMULATOR_RESET];
[self setIsWorking:NO];
for (NSWindow *theWindow in windowList)
{
[theWindow displayIfNeeded];
}
}
- (IBAction) speedLimitDisable:(id)sender
@ -711,7 +671,6 @@
- (IBAction) changeCoreSpeed:(id)sender
{
CocoaDSCore *cdsCore = (CocoaDSCore *)[cdsCoreController content];
[cdsCore setSpeedScalar:(CGFloat)[CocoaDSUtil getIBActionSenderTag:sender] / 100.0f];
}
@ -750,7 +709,7 @@
- (IBAction) changeVolume:(id)sender
{
float vol = [self currentVolumeValue];
const float vol = [self currentVolumeValue];
[self setCurrentVolumeValue:vol];
[self setStatusText:[NSString stringWithFormat:NSSTRING_STATUS_VOLUME, vol]];
[CocoaDSUtil messageSendOneWayWithFloat:[cdsSpeaker receivePort] msgID:MESSAGE_SET_VOLUME floatValue:vol];
@ -924,13 +883,13 @@
if ([self currentRom] != nil)
{
BOOL closeResult = [self handleUnloadRom:REASONFORCLOSE_OPEN romToLoad:fileURL];
const BOOL closeResult = [self handleUnloadRom:REASONFORCLOSE_OPEN romToLoad:fileURL];
if ([self isShowingSaveStateDialog])
{
return result;
}
if (![self isShowingFileMigrationDialog] && closeResult == NO)
if (![self isShowingFileMigrationDialog] && !closeResult)
{
return result;
}
@ -987,7 +946,6 @@
break;
}
[currentSaveStateURL retain];
[self setIsUserInterfaceBlockingExecution:YES];
[self setIsShowingSaveStateDialog:YES];
@ -1047,7 +1005,7 @@
{
CocoaDSRom *theRom = [aNotification object];
NSDictionary *userInfo = [aNotification userInfo];
BOOL didLoad = [(NSNumber *)[userInfo valueForKey:@"DidLoad"] boolValue];
const BOOL didLoad = [(NSNumber *)[userInfo valueForKey:@"DidLoad"] boolValue];
if (theRom == nil || ![theRom isDataLoaded] || !didLoad)
{
@ -1174,8 +1132,7 @@
{
BOOL result = NO;
[currentSaveStateURL release];
currentSaveStateURL = nil;
[self setCurrentSaveStateURL:nil];
isSaveStateEdited = NO;
for (NSWindow *theWindow in windowList)
@ -1341,7 +1298,7 @@
- (IBAction) closeSheet:(id)sender
{
NSWindow *sheet = [(NSControl *)sender window];
NSInteger code = [(NSControl *)sender tag];
const NSInteger code = [(NSControl *)sender tag];
[NSApp endSheet:sheet returnCode:code];
}
@ -1373,8 +1330,6 @@
- (void) didEndSaveStateSheet:(NSWindow *)sheet returnCode:(NSInteger)returnCode contextInfo:(void *)contextInfo
{
BOOL result = NO;
[sheet orderOut:self];
switch (returnCode)
@ -1387,13 +1342,16 @@
break;
case COCOA_DIALOG_DEFAULT: // Save
result = [CocoaDSFile saveState:[self currentSaveStateURL]];
if (result == NO)
{
const BOOL isStateSaved = [CocoaDSFile saveState:[self currentSaveStateURL]];
if (!isStateSaved)
{
// Throw an error here...
[self setStatusText:NSSTRING_STATUS_SAVESTATE_SAVING_FAILED];
return;
}
break;
}
case COCOA_DIALOG_OPTION: // Don't Save
break;
@ -1405,9 +1363,6 @@
[self unloadRom];
[self setIsUserInterfaceBlockingExecution:NO];
[self setIsShowingSaveStateDialog:NO];
// We retained this when we initially put up the sheet, so we need to release it now.
[self setCurrentSaveStateURL:nil];
}
- (void) didEndSaveStateSheetOpen:(NSWindow *)sheet returnCode:(NSInteger)returnCode contextInfo:(void *)contextInfo
@ -1439,7 +1394,7 @@
- (BOOL)validateUserInterfaceItem:(id <NSValidatedUserInterfaceItem>)theItem
{
BOOL enable = YES;
SEL theAction = [theItem action];
const SEL theAction = [theItem action];
CocoaDSCore *cdsCore = (CocoaDSCore *)[cdsCoreController content];
if (theAction == @selector(importRomSave:) ||
@ -1452,8 +1407,8 @@
}
else if (theAction == @selector(executeCoreToggle:))
{
if ([self currentRom] == nil ||
![cdsCore masterExecute] ||
if (![cdsCore masterExecute] ||
[self currentRom] == nil ||
[self isUserInterfaceBlockingExecution])
{
enable = NO;
@ -1487,8 +1442,8 @@
else if (theAction == @selector(executeCore) ||
theAction == @selector(pauseCore))
{
if ([self currentRom] == nil ||
![cdsCore masterExecute] ||
if (![cdsCore masterExecute] ||
[self currentRom] == nil ||
[self isShowingSaveStateDialog])
{
enable = NO;
@ -1524,11 +1479,7 @@
}
else if (theAction == @selector(loadEmuSaveStateSlot:))
{
if ([self currentRom] == nil || [self isShowingSaveStateDialog])
{
enable = NO;
}
else if (![CocoaDSFile saveStateExistsForSlot:[[self currentRom] fileURL] slotNumber:[theItem tag] + 1])
if ([self currentRom] == nil || [self isShowingSaveStateDialog] || ![CocoaDSFile saveStateExistsForSlot:[[self currentRom] fileURL] slotNumber:[theItem tag] + 1])
{
enable = NO;
}

View File

@ -68,7 +68,6 @@ enum OGLVertexAttributeID
NSMutableDictionary *bindings;
OSSpinLock spinlockNormalSize;
OSSpinLock spinlockGpuStateFlags;
OSSpinLock spinlockScale;
OSSpinLock spinlockRotation;
OSSpinLock spinlockUseBilinearOutput;

View File

@ -107,7 +107,6 @@ const char *fragmentProgram_100 = {"\
view = nil;
spinlockNormalSize = OS_SPINLOCK_INIT;
spinlockGpuStateFlags = OS_SPINLOCK_INIT;
spinlockScale = OS_SPINLOCK_INIT;
spinlockRotation = OS_SPINLOCK_INIT;
spinlockUseBilinearOutput = OS_SPINLOCK_INIT;

View File

@ -234,7 +234,7 @@
- (IBAction) changeRotationRelative:(id)sender
{
double angleDegrees = [dispViewDelegate rotation] + (double)[CocoaDSUtil getIBActionSenderTag:sender];
const double angleDegrees = [dispViewDelegate rotation] + (double)[CocoaDSUtil getIBActionSenderTag:sender];
[self setContentRotation:angleDegrees];
}
@ -250,7 +250,7 @@
- (IBAction) changeDisplayMode:(id)sender
{
NSInteger newDisplayModeID = [CocoaDSUtil getIBActionSenderTag:sender];
const NSInteger newDisplayModeID = [CocoaDSUtil getIBActionSenderTag:sender];
if (newDisplayModeID == [dispViewDelegate displayMode])
{
@ -263,7 +263,7 @@
- (IBAction) changeDisplayOrientation:(id)sender
{
NSInteger newDisplayOrientation = [CocoaDSUtil getIBActionSenderTag:sender];
const NSInteger newDisplayOrientation = [CocoaDSUtil getIBActionSenderTag:sender];
if (newDisplayOrientation == [dispViewDelegate displayOrientation])
{
@ -336,14 +336,7 @@
- (IBAction) toggleStatusBar:(id)sender
{
if (isShowingStatusBar)
{
[self setShowStatusBar:NO];
}
else
{
[self setShowStatusBar:YES];
}
[self setShowStatusBar:(isShowingStatusBar) ? NO : YES];
}
- (void) setShowStatusBar:(BOOL)showStatusBar
@ -395,14 +388,12 @@
[emuControl pauseCore];
NSInteger buttonClicked = NSFileHandlingPanelCancelButton;
NSSavePanel *panel = [NSSavePanel savePanel];
[panel setCanCreateDirectories:YES];
[panel setTitle:NSSTRING_TITLE_SAVE_SCREENSHOT_PANEL];
[panel setAccessoryView:saveScreenshotPanelAccessoryView];
buttonClicked = [panel runModal];
const NSInteger buttonClicked = [panel runModal];
if(buttonClicked == NSOKButton)
{
[dispViewDelegate requestScreenshot:[panel URL] fileType:screenshotFileFormat];
@ -420,7 +411,7 @@
NSBitmapImageFileType fileType = (NSBitmapImageFileType)[(NSNumber *)[[aNotification userInfo] valueForKey:@"fileType"] integerValue];
NSImage *screenshotImage = (NSImage *)[[aNotification userInfo] valueForKey:@"screenshotImage"];
BOOL fileSaved = [CocoaDSFile saveScreenshot:fileURL bitmapData:[[screenshotImage representations] objectAtIndex:0] fileType:fileType];
const BOOL fileSaved = [CocoaDSFile saveScreenshot:fileURL bitmapData:[[screenshotImage representations] objectAtIndex:0] fileType:fileType];
if (!fileSaved)
{
[CocoaDSUtil quickDialogUsingTitle:NSSTRING_ERROR_TITLE_LEGACY message:NSSTRING_ERROR_SCREENSHOT_FAILED_LEGACY];
@ -432,22 +423,15 @@
- (BOOL)validateUserInterfaceItem:(id <NSValidatedUserInterfaceItem>)theItem
{
BOOL enable = YES;
SEL theAction = [theItem action];
const SEL theAction = [theItem action];
if (theAction == @selector(changeScale:))
{
NSInteger viewScale = (NSInteger)([dispViewDelegate scale] * 100.0);
const NSInteger viewScale = (NSInteger)([dispViewDelegate scale] * 100.0);
if ([(id)theItem isMemberOfClass:[NSMenuItem class]])
{
if (viewScale == [theItem tag])
{
[(NSMenuItem*)theItem setState:NSOnState];
}
else
{
[(NSMenuItem*)theItem setState:NSOffState];
}
[(NSMenuItem*)theItem setState:(viewScale == [theItem tag]) ? NSOnState : NSOffState];
}
}
else if (theAction == @selector(changeRotation:))
@ -484,84 +468,42 @@
{
if ([(id)theItem isMemberOfClass:[NSMenuItem class]])
{
if ([dispViewDelegate displayMode] == [theItem tag])
{
[(NSMenuItem*)theItem setState:NSOnState];
}
else
{
[(NSMenuItem*)theItem setState:NSOffState];
}
[(NSMenuItem*)theItem setState:([dispViewDelegate displayMode] == [theItem tag]) ? NSOnState : NSOffState];
}
}
else if (theAction == @selector(changeDisplayOrientation:))
{
if ([(id)theItem isMemberOfClass:[NSMenuItem class]])
{
if ([dispViewDelegate displayOrientation] == [theItem tag])
{
[(NSMenuItem*)theItem setState:NSOnState];
}
else
{
[(NSMenuItem*)theItem setState:NSOffState];
}
[(NSMenuItem*)theItem setState:([dispViewDelegate displayOrientation] == [theItem tag]) ? NSOnState : NSOffState];
}
}
else if (theAction == @selector(changeDisplayOrder:))
{
if ([(id)theItem isMemberOfClass:[NSMenuItem class]])
{
if ([dispViewDelegate displayOrder] == [theItem tag])
{
[(NSMenuItem*)theItem setState:NSOnState];
}
else
{
[(NSMenuItem*)theItem setState:NSOffState];
}
[(NSMenuItem*)theItem setState:([dispViewDelegate displayOrder] == [theItem tag]) ? NSOnState : NSOffState];
}
}
else if (theAction == @selector(hudDisable:))
{
if ([(id)theItem isMemberOfClass:[NSMenuItem class]])
{
if ([dispViewDelegate isHudEnabled])
{
[(NSMenuItem*)theItem setTitle:NSSTRING_TITLE_DISABLE_HUD];
}
else
{
[(NSMenuItem*)theItem setTitle:NSSTRING_TITLE_ENABLE_HUD];
}
[(NSMenuItem*)theItem setTitle:([dispViewDelegate isHudEnabled]) ? NSSTRING_TITLE_DISABLE_HUD : NSSTRING_TITLE_ENABLE_HUD];
}
}
else if (theAction == @selector(toggleStatusBar:))
{
if ([(id)theItem isMemberOfClass:[NSMenuItem class]])
{
if (isShowingStatusBar)
{
[(NSMenuItem*)theItem setTitle:NSSTRING_TITLE_HIDE_STATUS_BAR];
}
else
{
[(NSMenuItem*)theItem setTitle:NSSTRING_TITLE_SHOW_STATUS_BAR];
}
[(NSMenuItem*)theItem setTitle:(isShowingStatusBar) ? NSSTRING_TITLE_HIDE_STATUS_BAR : NSSTRING_TITLE_SHOW_STATUS_BAR];
}
}
else if (theAction == @selector(toggleKeepMinDisplaySizeAtNormal:))
{
if ([(id)theItem isMemberOfClass:[NSMenuItem class]])
{
if (isMinSizeNormal)
{
[(NSMenuItem*)theItem setState:NSOnState];
}
else
{
[(NSMenuItem*)theItem setState:NSOffState];
}
[(NSMenuItem*)theItem setState:(isMinSizeNormal) ? NSOnState : NSOffState];
}
}
@ -576,9 +518,6 @@
- (NSSize)windowWillResize:(NSWindow *)sender toSize:(NSSize)frameSize
{
NSSize finalSize = frameSize;
const NSSize normalBounds = [dispViewDelegate normalSize];
// Get a content Rect so that we can make our comparison.
// This will be based on the proposed frameSize.
const NSRect frameRect = NSMakeRect(0.0f, 0.0f, frameSize.width, frameSize.height);
@ -586,17 +525,16 @@
// Find the maximum scalar we can use for the display view, bounded by the
// content Rect.
const NSSize checkSize = GetTransformedBounds(normalBounds, 1.0, [dispViewDelegate rotation]);
const NSSize checkSize = GetTransformedBounds([dispViewDelegate normalSize], 1.0, [dispViewDelegate rotation]);
const NSSize contentBounds = NSMakeSize(contentRect.size.width, contentRect.size.height - statusBarHeight);
const double maxS = GetMaxScalarInBounds(checkSize.width, checkSize.height, contentBounds.width, contentBounds.height);
// Make a new content Rect with our max scalar, and convert it back to a frame Rect.
const NSRect finalContentRect = NSMakeRect(0.0f, 0.0f, checkSize.width * maxS, (checkSize.height * maxS) + statusBarHeight);
NSRect finalFrameRect = [sender frameRectForContentRect:finalContentRect];
const NSRect finalFrameRect = [sender frameRectForContentRect:finalContentRect];
// Set the final size based on our new frame Rect.
finalSize.width = finalFrameRect.size.width;
finalSize.height = finalFrameRect.size.height;
const NSSize finalSize = {finalFrameRect.size.width, finalFrameRect.size.height};
return finalSize;
}
@ -608,11 +546,8 @@
return;
}
const NSSize normalBounds = [dispViewDelegate normalSize];
const double r = [dispViewDelegate rotation];
// Get the max scalar within the window's current content bounds.
const NSSize checkSize = GetTransformedBounds(normalBounds, 1.0, r);
const NSSize checkSize = GetTransformedBounds([dispViewDelegate normalSize], 1.0, [dispViewDelegate rotation]);
NSSize contentBounds = [[window contentView] bounds].size;
contentBounds.height -= statusBarHeight;
const double maxS = GetMaxScalarInBounds(checkSize.width, checkSize.height, contentBounds.width, contentBounds.height);
@ -653,8 +588,8 @@
[self setShowStatusBar:[[NSUserDefaults standardUserDefaults] boolForKey:@"DisplayView_ShowStatusBar"]];
// Set the display settings per user preferences.
double displayScalar = (double)([[NSUserDefaults standardUserDefaults] floatForKey:@"DisplayView_Size"] / 100.0);
double displayRotation = (double)[[NSUserDefaults standardUserDefaults] floatForKey:@"DisplayView_Rotation"];
const double displayScalar = (double)([[NSUserDefaults standardUserDefaults] floatForKey:@"DisplayView_Size"] / 100.0);
const double displayRotation = (double)[[NSUserDefaults standardUserDefaults] floatForKey:@"DisplayView_Rotation"];
[dispViewDelegate setDisplayMode:[[NSUserDefaults standardUserDefaults] integerForKey:@"DisplayView_Mode"]];
[dispViewDelegate setDisplayOrientation:[[NSUserDefaults standardUserDefaults] integerForKey:@"DisplayViewCombo_Orientation"]];
[dispViewDelegate setDisplayOrder:[[NSUserDefaults standardUserDefaults] integerForKey:@"DisplayViewCombo_Order"]];

View File

@ -93,14 +93,7 @@
vfWidth = (NSUInteger)vfDestSize.width;
vfHeight = (NSUInteger)vfDestSize.height;
if (useBilinear)
{
bilinearVideoFilter = [[CocoaVideoFilter alloc] initWithSize:vfDestSize typeID:VideoFilterTypeID_Bilinear];
}
else
{
bilinearVideoFilter = [[CocoaVideoFilter alloc] initWithSize:vfDestSize typeID:VideoFilterTypeID_Nearest2X];
}
bilinearVideoFilter = [[CocoaVideoFilter alloc] initWithSize:vfDestSize typeID:(useBilinear) ? VideoFilterTypeID_Bilinear : VideoFilterTypeID_Nearest2X];
}
else if (vfWidth >= 256 || vfHeight >= 256)
{
@ -108,14 +101,7 @@
}
else
{
if (useBilinear)
{
bilinearVideoFilter = [[CocoaVideoFilter alloc] initWithSize:vfDestSize typeID:VideoFilterTypeID_Bilinear];
}
else
{
bilinearVideoFilter = [[CocoaVideoFilter alloc] initWithSize:vfDestSize typeID:VideoFilterTypeID_Nearest2X];
}
bilinearVideoFilter = [[CocoaVideoFilter alloc] initWithSize:vfDestSize typeID:(useBilinear) ? VideoFilterTypeID_Bilinear : VideoFilterTypeID_Nearest2X];
}
RGBA8888ForceOpaqueBuffer((const uint32_t *)[videoFilter runFilter], (uint32_t *)[bilinearVideoFilter srcBufferPtr], (vfWidth * vfHeight));
@ -171,7 +157,7 @@
- (IBAction) selectAutoloadRomOption:(id)sender
{
NSInteger option = [(NSMenuItem *)sender tag];
const NSInteger option = [(NSMenuItem *)sender tag];
[[NSUserDefaults standardUserDefaults] setInteger:option forKey:@"General_AutoloadROMOption"];
@ -334,7 +320,7 @@
[[NSUserDefaults standardUserDefaults] setObject:selectedFile forKey:@"R4Cheat_DatabasePath"];
[bindings setValue:[selectedFile lastPathComponent] forKey:@"R4CheatDatabaseName"];
BOOL isRomLoaded = [(NSNumber *)[(NSMutableDictionary *)[emuWindowController content] valueForKey:@"isRomLoaded"] boolValue];
const BOOL isRomLoaded = [(NSNumber *)[(NSMutableDictionary *)[emuWindowController content] valueForKey:@"isRomLoaded"] boolValue];
NSMutableDictionary *cheatWindowBindings = (NSMutableDictionary *)[cheatWindowController content];
CocoaDSCheatManager *cdsCheats = (CocoaDSCheatManager *)[cheatWindowBindings valueForKey:@"cheatList"];
@ -394,30 +380,24 @@
- (IBAction) selectSoundInputMode:(id)sender
{
CocoaDSCore *cdsCore = (CocoaDSCore *)[cdsCoreController content];
if (cdsCore != nil)
{
[cdsCore.cdsController setSoundInputMode:[[NSUserDefaults standardUserDefaults] integerForKey:@"Input_AudioInputMode"]];
}
[cdsCore.cdsController setSoundInputMode:[[NSUserDefaults standardUserDefaults] integerForKey:@"Input_AudioInputMode"]];
}
- (IBAction) selectDisplayMode:(id)sender
{
NSInteger displayMode = [(NSMenuItem *)sender tag];
const NSInteger displayMode = [(NSMenuItem *)sender tag];
[[NSUserDefaults standardUserDefaults] setInteger:displayMode forKey:@"DisplayView_Mode"];
}
- (IBAction) selectDisplaySize:(id)sender
{
NSInteger displaySize = [(NSMenuItem *)sender tag];
const NSInteger displaySize = [(NSMenuItem *)sender tag];
[[NSUserDefaults standardUserDefaults] setInteger:displaySize forKey:@"DisplayView_Size"];
}
- (IBAction) selectDisplayRotation:(id)sender
{
NSInteger displayRotation = [(NSMenuItem *)sender tag];
const NSInteger displayRotation = [(NSMenuItem *)sender tag];
if (displayRotation != -1)
{
[[NSUserDefaults standardUserDefaults] setDouble:displayRotation forKey:@"DisplayView_Rotation"];
@ -426,20 +406,13 @@
- (IBAction) setUseBilinear:(id)sender
{
BOOL useBilinear = [CocoaDSUtil getIBActionSenderButtonStateBool:sender];
NSUInteger previewSrcWidth = (NSUInteger)[bilinearVideoFilter srcSize].width;
NSUInteger previewSrcHeight = (NSUInteger)[bilinearVideoFilter srcSize].height;
const BOOL useBilinear = [CocoaDSUtil getIBActionSenderButtonStateBool:sender];
const NSUInteger previewSrcWidth = (NSUInteger)[bilinearVideoFilter srcSize].width;
const NSUInteger previewSrcHeight = (NSUInteger)[bilinearVideoFilter srcSize].height;
if (previewSrcWidth <= 128 || previewSrcHeight <= 128)
{
if (useBilinear)
{
[bilinearVideoFilter changeFilter:VideoFilterTypeID_Bilinear];
}
else
{
[bilinearVideoFilter changeFilter:VideoFilterTypeID_Nearest2X];
}
[bilinearVideoFilter changeFilter:(useBilinear) ? VideoFilterTypeID_Bilinear : VideoFilterTypeID_Nearest2X];
}
NSBitmapImageRep *newPreviewImageRep = [bilinearVideoFilter bitmapImageRep];
@ -455,8 +428,8 @@
- (IBAction) selectVideoFilterType:(id)sender
{
VideoFilterTypeID vfType = (VideoFilterTypeID)[CocoaDSUtil getIBActionSenderTag:sender];
BOOL useBilinear = [[NSUserDefaults standardUserDefaults] boolForKey:@"DisplayView_UseBilinearOutput"];
const VideoFilterTypeID vfType = (VideoFilterTypeID)[CocoaDSUtil getIBActionSenderTag:sender];
const BOOL useBilinear = [[NSUserDefaults standardUserDefaults] boolForKey:@"DisplayView_UseBilinearOutput"];
[[NSUserDefaults standardUserDefaults] setInteger:vfType forKey:@"DisplayView_VideoFilter"];
@ -471,16 +444,9 @@
vfDestSize = [videoFilter destSize];
vfWidth = (NSUInteger)vfDestSize.width;
vfHeight = (NSUInteger)vfDestSize.height;
[bilinearVideoFilter setSourceSize:vfDestSize];
if (useBilinear)
{
[bilinearVideoFilter changeFilter:VideoFilterTypeID_Bilinear];
}
else
{
[bilinearVideoFilter changeFilter:VideoFilterTypeID_Nearest2X];
}
[bilinearVideoFilter setSourceSize:vfDestSize];
[bilinearVideoFilter changeFilter:(useBilinear) ? VideoFilterTypeID_Bilinear : VideoFilterTypeID_Nearest2X];
}
else if (vfWidth >= 256 || vfHeight >= 256)
{
@ -490,15 +456,7 @@
else
{
[bilinearVideoFilter setSourceSize:vfDestSize];
if (useBilinear)
{
[bilinearVideoFilter changeFilter:VideoFilterTypeID_Bilinear];
}
else
{
[bilinearVideoFilter changeFilter:VideoFilterTypeID_Nearest2X];
}
[bilinearVideoFilter changeFilter:(useBilinear) ? VideoFilterTypeID_Bilinear : VideoFilterTypeID_Nearest2X];
}
RGBA8888ForceOpaqueBuffer((const uint32_t *)[videoFilter runFilter], (uint32_t *)[bilinearVideoFilter srcBufferPtr], (vfWidth * vfHeight));
@ -516,7 +474,7 @@
- (IBAction) updateVolumeIcon:(id)sender
{
NSImage *iconImage = (NSImage *)[bindings objectForKey:@"volumeIconImage"];
float vol = [[NSUserDefaults standardUserDefaults] floatForKey:@"Sound_Volume"];
const float vol = [[NSUserDefaults standardUserDefaults] floatForKey:@"Sound_Volume"];
if (vol <= 0.0f)
{
@ -560,20 +518,13 @@
- (IBAction) selectSPUSyncMode:(id)sender
{
NSInteger spuSyncMode = [[NSUserDefaults standardUserDefaults] integerForKey:@"SPU_SyncMode"];
if (spuSyncMode == SPU_SYNC_MODE_DUAL_SYNC_ASYNC)
{
[spuSyncMethodMenu setEnabled:NO];
}
else
{
[spuSyncMethodMenu setEnabled:YES];
}
const NSInteger spuSyncMode = [[NSUserDefaults standardUserDefaults] integerForKey:@"SPU_SyncMode"];
[spuSyncMethodMenu setEnabled:(spuSyncMode == SPU_SYNC_MODE_DUAL_SYNC_ASYNC) ? NO : YES];
}
- (IBAction) selectSPUSyncMethod:(id)sender
{
NSInteger spuSyncMethod = [(NSMenuItem *)sender tag];
const NSInteger spuSyncMethod = [(NSMenuItem *)sender tag];
[[NSUserDefaults standardUserDefaults] setInteger:spuSyncMethod forKey:@"SPU_SyncMethod"];
}
@ -706,10 +657,7 @@
[bindings setValue:[selectedFile lastPathComponent] forKey:@"Arm9BiosImageName"];
CocoaDSCore *cdsCore = (CocoaDSCore *)[cdsCoreController content];
if (cdsCore != nil)
{
[cdsCore setArm9ImageURL:selectedFileURL];
}
[cdsCore setArm9ImageURL:selectedFileURL];
}
- (void) chooseArm7BiosImageDidEnd:(NSOpenPanel *)sheet returnCode:(int)returnCode contextInfo:(void *)contextInfo
@ -733,10 +681,7 @@
[bindings setValue:[selectedFile lastPathComponent] forKey:@"Arm7BiosImageName"];
CocoaDSCore *cdsCore = (CocoaDSCore *)[cdsCoreController content];
if (cdsCore != nil)
{
[cdsCore setArm7ImageURL:selectedFileURL];
}
[cdsCore setArm7ImageURL:selectedFileURL];
}
- (void) chooseFirmwareImageDidEnd:(NSOpenPanel *)sheet returnCode:(int)returnCode contextInfo:(void *)contextInfo
@ -760,10 +705,7 @@
[bindings setValue:[selectedFile lastPathComponent] forKey:@"FirmwareImageName"];
CocoaDSCore *cdsCore = (CocoaDSCore *)[cdsCoreController content];
if (cdsCore != nil)
{
[cdsCore setFirmwareImageURL:selectedFileURL];
}
[cdsCore setFirmwareImageURL:selectedFileURL];
}
- (IBAction) configureInternalFirmware:(id)sender
@ -778,7 +720,7 @@
- (IBAction) closeFirmwareConfigSheet:(id)sender
{
NSWindow *sheet = [(NSControl *)sender window];
NSInteger code = [CocoaDSUtil getIBActionSenderTag:sender];
const NSInteger code = [CocoaDSUtil getIBActionSenderTag:sender];
// Force end of editing of any text fields.
[sheet makeFirstResponder:nil];