diff --git a/ui/drivers/cocoa/cocoa_common_metal.h b/ui/drivers/cocoa/cocoa_common_metal.h index 377e3a2732..1be147c5b2 100644 --- a/ui/drivers/cocoa/cocoa_common_metal.h +++ b/ui/drivers/cocoa/cocoa_common_metal.h @@ -14,8 +14,8 @@ * If not, see . */ -#ifndef __COCOA_COMMON_H -#define __COCOA_COMMON_H +#ifndef __COCOA_COMMON_METAL_H +#define __COCOA_COMMON_METAL_H #include diff --git a/ui/drivers/cocoa/cocoa_common_metal.m b/ui/drivers/cocoa/cocoa_common_metal.m index 928a06cc6c..f5ddaceb08 100644 --- a/ui/drivers/cocoa/cocoa_common_metal.m +++ b/ui/drivers/cocoa/cocoa_common_metal.m @@ -43,7 +43,6 @@ #include "../../../location/location_driver.h" #include "../../../camera/camera_driver.h" -#ifdef HAVE_METAL @implementation MetalView - (void)keyDown:(NSEvent*)theEvent @@ -61,7 +60,6 @@ return YES; } @end -#endif static CocoaView* g_instance; @@ -102,7 +100,7 @@ void *glkitview_init(void); #if defined(HAVE_COCOA_METAL) [self setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable]; - [self registerForDraggedTypes:[NSArray arrayWithObjects:NSColorPboardType, NSFilenamesPboardType, nil]]; + [self registerForDraggedTypes:@[NSColorPboardType, NSFilenamesPboardType]]; #elif defined(HAVE_COCOATOUCH) self.view = (__bridge GLKView*)glkitview_init(); diff --git a/ui/drivers/cocoa/ui_cocoa_application_metal.m b/ui/drivers/cocoa/ui_cocoa_application_metal.m index b5cc8f46ea..f82b08ff8b 100644 --- a/ui/drivers/cocoa/ui_cocoa_application_metal.m +++ b/ui/drivers/cocoa/ui_cocoa_application_metal.m @@ -23,10 +23,6 @@ #include "cocoa_common_metal.h" #include "../../ui_companion_driver.h" -#if MAC_OS_X_VERSION_MAX_ALLOWED < 101200 -#define NSEventMaskAny NSAnyEventMask -#endif - static void* ui_application_cocoa_initialize(void) { return NULL; @@ -47,14 +43,7 @@ static void ui_application_cocoa_process_events(void) NSEvent *event = [NSApp nextEventMatchingMask:NSEventMaskAny untilDate:[NSDate distantPast] inMode:NSDefaultRunLoopMode dequeue:YES]; if (!event) break; -#if __has_feature(objc_arc) [NSApp sendEvent: event]; - -#else - [event retain]; - [NSApp sendEvent: event]; - [event release]; -#endif } } diff --git a/ui/drivers/cocoa/ui_cocoa_browser_window_metal.m b/ui/drivers/cocoa/ui_cocoa_browser_window_metal.m index 27b1474409..747df254a1 100644 --- a/ui/drivers/cocoa/ui_cocoa_browser_window_metal.m +++ b/ui/drivers/cocoa/ui_cocoa_browser_window_metal.m @@ -27,31 +27,25 @@ static bool ui_browser_window_cocoa_open(ui_browser_window_state_t *state) { - NSOpenPanel* panel = (NSOpenPanel*)[NSOpenPanel openPanel]; - NSArray *filetypes = NULL; - - if (!string_is_empty(state->filters)) - filetypes = [[NSArray alloc] initWithObjects:BOXSTRING(state->filters), BOXSTRING(state->filters_title), nil]; - [panel setAllowedFileTypes:filetypes]; -#if defined(MAC_OS_X_VERSION_10_6) - [panel setMessage:BOXSTRING(state->title)]; - if ([panel runModalForDirectory:BOXSTRING(state->startdir) file:nil] != 1) - return false; -#else - [panel setTitle:NSLocalizedString(BOXSTRING(state->title), BOXSTRING("open panel"))]; - [panel setDirectory:BOXSTRING(state->startdir)]; - [panel setCanChooseDirectories:NO]; - [panel setCanChooseFiles:YES]; - [panel setAllowsMultipleSelection:NO]; - [panel setTreatsFilePackagesAsDirectories:NO]; - NSInteger result = [panel runModal]; - if (result != 1) - return false; -#endif - NSURL *url = (NSURL*)panel.URL; - const char *res_path = [url.path UTF8String]; - state->result = strdup(res_path); - + NSOpenPanel *panel = [NSOpenPanel openPanel]; + + if (!string_is_empty(state->filters)) + { + [panel setAllowedFileTypes:@[BOXSTRING(state->filters), BOXSTRING(state->filters_title)]]; + } + + panel.title = NSLocalizedString(BOXSTRING(state->title), BOXSTRING("open panel")); + panel.directoryURL = [NSURL fileURLWithPath:BOXSTRING(state->startdir)]; + panel.canChooseDirectories = NO; + panel.canChooseFiles = YES; + panel.allowsMultipleSelection = NO; + panel.treatsFilePackagesAsDirectories = NO; + NSModalResponse result = [panel runModal]; + if (result != NSModalResponseOK) + return false; + const char *res_path = [panel.URL.path UTF8String]; + state->result = strdup(res_path); + return true; } diff --git a/ui/drivers/cocoa/ui_cocoa_msg_window_metal.m b/ui/drivers/cocoa/ui_cocoa_msg_window_metal.m index a209e8dc58..25d110b358 100644 --- a/ui/drivers/cocoa/ui_cocoa_msg_window_metal.m +++ b/ui/drivers/cocoa/ui_cocoa_msg_window_metal.m @@ -25,20 +25,10 @@ #include "../../ui_companion_driver.h" -#if MAC_OS_X_VERSION_MAX_ALLOWED < 101200 -#define NSAlertStyleCritical NSCriticalAlertStyle -#define NSAlertStyleWarning NSWarningAlertStyle -#define NSAlertStyleInformational NSInformationalAlertStyle -#endif - static enum ui_msg_window_response ui_msg_window_cocoa_dialog(ui_msg_window_state *state, enum ui_msg_window_type type) { - NSInteger response; -#if __has_feature(objc_arc) + NSModalResponse response; NSAlert *alert = [NSAlert new]; -#else - NSAlert* alert = [[NSAlert new] autorelease]; -#endif if (!string_is_empty(state->title)) [alert setMessageText:BOXSTRING(state->title)]; @@ -80,19 +70,11 @@ static enum ui_msg_window_response ui_msg_window_cocoa_dialog(ui_msg_window_stat break; } -#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1090 [alert beginSheetModalForWindow:(BRIDGE NSWindow *)ui_companion_driver_get_main_window() completionHandler:^(NSModalResponse returnCode) { [[NSApplication sharedApplication] stopModalWithCode:returnCode]; }]; response = [alert runModal]; -#else - [alert beginSheetModalForWindow:(BRIDGE NSWindow *)ui_companion_driver_get_main_window() - modalDelegate:apple_platform - didEndSelector:@selector(alertDidEnd:returnCode:contextInfo:) - contextInfo:nil]; - response = [[NSApplication sharedApplication] runModalForWindow:[alert window]]; -#endif switch (state->buttons) { diff --git a/ui/drivers/cocoa/ui_cocoa_window_metal.m b/ui/drivers/cocoa/ui_cocoa_window_metal.m index d9f39db124..93feafb28e 100644 --- a/ui/drivers/cocoa/ui_cocoa_window_metal.m +++ b/ui/drivers/cocoa/ui_cocoa_window_metal.m @@ -32,12 +32,6 @@ static void* ui_window_cocoa_init(void) static void ui_window_cocoa_destroy(void *data) { -#if !__has_feature(objc_arc) - ui_window_cocoa_t *cocoa = (ui_window_cocoa_t*)data; - CocoaView *cocoa_view = (CocoaView*)cocoa->data; - // TODO(sgc): incorrect behavior - [[cocoa_view window] release]; -#endif } static void ui_window_cocoa_set_focused(void *data) @@ -73,7 +67,7 @@ static void ui_window_cocoa_set_droppable(void *data, bool droppable) if (droppable) { - [[cocoa_view window] registerForDraggedTypes:[NSArray arrayWithObjects:NSColorPboardType, NSFilenamesPboardType, nil]]; + [[cocoa_view window] registerForDraggedTypes:@[NSPasteboardTypeColor, NSPasteboardTypeFileURL]]; } else { @@ -85,9 +79,7 @@ static bool ui_window_cocoa_focused(void *data) { ui_window_cocoa_t *cocoa = (ui_window_cocoa_t*)data; CocoaView *cocoa_view = (BRIDGE CocoaView*)cocoa->data; - if ([[cocoa_view window] isMainWindow] == YES) - return true; - return false; + return cocoa_view.window.isMainWindow; } ui_window_t ui_window_cocoa = { diff --git a/ui/drivers/ui_cocoa_metal.m b/ui/drivers/ui_cocoa_metal.m index 854fac7de5..6dd34e15e4 100644 --- a/ui/drivers/ui_cocoa_metal.m +++ b/ui/drivers/ui_cocoa_metal.m @@ -38,12 +38,9 @@ #include "../../tasks/tasks_internal.h" #include ".././verbosity.h" -#ifdef HAVE_METAL #import #import -#endif -#if !((defined(__MACH__) && (defined(__ppc__) || defined(__ppc64__)))) @interface WindowListener : NSResponder @end @@ -61,23 +58,16 @@ {} @end -#endif id apple_platform; -#if (defined(__MACH__) && (defined(__ppc__) || defined(__ppc64__))) -@interface RetroArch_OSX : NSObject -#else @interface RetroArch_OSX : NSObject -#endif { NSWindow* _window; apple_view_type_t _vt; NSView* _renderView; id _sleepActivity; -#if !(defined(__MACH__) && (defined(__ppc__) || defined(__ppc64__))) WindowListener *_listener; -#endif } @property (nonatomic, retain) NSWindow IBOutlet* window; @@ -88,42 +78,10 @@ static void app_terminate(void) { [[NSApplication sharedApplication] terminate:nil]; } -#ifdef HAVE_METAL @interface RAWindow : NSWindow @end @implementation RAWindow -#else -@interface RApplication : NSApplication -@end - -@implementation RApplication -#endif - -#if MAC_OS_X_VERSION_MAX_ALLOWED < 101200 -#define NSEventTypeKeyDown NSKeyDown -#define NSEventTypeKeyUp NSKeyUp -#define NSEventTypeFlagsChanged NSFlagsChanged -#define NSEventTypeMouseMoved NSMouseMoved -#define NSEventTypeLeftMouseDragged NSLeftMouseDragged -#define NSEventTypeRightMouseDragged NSRightMouseDragged -#define NSEventTypeOtherMouseDragged NSOtherMouseDragged -#define NSEventTypeLeftMouseDown NSLeftMouseDown -#define NSEventTypeRightMouseDown NSRightMouseDown -#define NSEventTypeOtherMouseDown NSOtherMouseDown -#define NSEventTypeLeftMouseUp NSLeftMouseUp -#define NSEventTypeRightMouseUp NSRightMouseUp -#define NSEventTypeOtherMouseUp NSOtherMouseUp -#define NSEventTypeScrollWheel NSScrollWheel - -// modifier flags -#define NSEventModifierFlagCapsLock NSAlphaShiftKeyMask -#define NSEventModifierFlagShift NSShiftKeyMask -#define NSEventModifierFlagControl NSControlKeyMask -#define NSEventModifierFlagOption NSAlternateKeyMask -#define NSEventModifierFlagCommand NSCommandKeyMask -#define NSEventModifierFlagNumericPad NSNumericPadKeyMask -#endif - (void)sendEvent:(NSEvent *)event { [super sendEvent:event]; @@ -246,39 +204,19 @@ static char** waiting_argv; @synthesize window = _window; -#if !__has_feature(objc_arc) -- (void)dealloc -{ - [_window release]; - [super dealloc]; -} -#endif - -#define NS_WINDOW_COLLECTION_BEHAVIOR_FULLSCREEN_PRIMARY (1 << 17) - (void)applicationDidFinishLaunching:(NSNotification *)aNotification { unsigned i; apple_platform = self; - SEL selector = NSSelectorFromString(BOXSTRING("setCollectionBehavior:")); - SEL fsselector = NSSelectorFromString(BOXSTRING("toggleFullScreen:")); - - if ([self.window respondsToSelector:selector]) - { - if ([self.window respondsToSelector:fsselector]) - [self.window setCollectionBehavior:NS_WINDOW_COLLECTION_BEHAVIOR_FULLSCREEN_PRIMARY]; - } + self.window.collectionBehavior = NSWindowCollectionBehaviorFullScreenPrimary; -#if !(defined(__MACH__) && (defined(__ppc__) || defined(__ppc64__))) _listener = [WindowListener new]; -#endif [self.window setAcceptsMouseMovedEvents: YES]; -#if !(defined(__MACH__) && (defined(__ppc__) || defined(__ppc64__))) [self.window setNextResponder:_listener]; self.window.delegate = _listener; -#endif [[self.window contentView] setAutoresizesSubviews:YES]; @@ -324,14 +262,12 @@ static char** waiting_argv; switch (vt) { case APPLE_VIEW_TYPE_VULKAN: case APPLE_VIEW_TYPE_METAL: -#if defined(HAVE_METAL) || defined(HAVE_VULKAN) { MetalView *v = [MetalView new]; v.paused = YES; v.enableSetNeedsDisplay = NO; _renderView = v; } -#endif break; case APPLE_VIEW_TYPE_OPENGL: @@ -349,9 +285,7 @@ static char** waiting_argv; [_renderView setFrame: [[self.window contentView] bounds]]; self.window.contentView = _renderView; -#if !(defined(__MACH__) && (defined(__ppc__) || defined(__ppc64__))) - [self.window.contentView setNextResponder:_listener]; -#endif + self.window.contentView.nextResponder = _listener; } - (apple_view_type_t)viewType { @@ -367,8 +301,7 @@ static char** waiting_argv; } - (void)setVideoMode:(gfx_ctx_mode_t)mode { -#ifdef HAVE_METAL - BOOL isFullScreen = (self.window.styleMask & NSFullScreenWindowMask) == NSFullScreenWindowMask; + BOOL isFullScreen = (self.window.styleMask & NSWindowStyleMaskFullScreen) == NSWindowStyleMaskFullScreen; if (mode.fullscreen && !isFullScreen) { [self.window toggleFullScreen:self]; @@ -386,7 +319,6 @@ static char** waiting_argv; [self.window setContentSize:NSMakeSize(mode.width-1, mode.height)]; } [self.window setContentSize:NSMakeSize(mode.width, mode.height)]; -#endif } - (void)setCursorVisible:(bool)v { @@ -398,7 +330,6 @@ static char** waiting_argv; - (bool)setDisableDisplaySleep:(bool)disable { -#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1090 if (disable && _sleepActivity == nil) { _sleepActivity = [NSProcessInfo.processInfo beginActivityWithOptions:NSActivityIdleDisplaySleepDisabled reason:@"disable screen saver"]; @@ -409,10 +340,6 @@ static char** waiting_argv; _sleepActivity = nil; } return YES; -#else - return NO; -#endif - }