-
-
Notifications
You must be signed in to change notification settings - Fork 1.8k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
369e254
commit ce72787
Showing
1 changed file
with
172 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,172 @@ | ||
diff --git a/gfx/drivers_context/cocoa_gl_ctx.m b/gfx/drivers_context/cocoa_gl_ctx.m | ||
index e67725f..868d874 100644 | ||
--- a/gfx/drivers_context/cocoa_gl_ctx.m | ||
+++ b/gfx/drivers_context/cocoa_gl_ctx.m | ||
@@ -83,6 +83,7 @@ static NSOpenGLPixelFormat* g_format; | ||
|
||
static unsigned g_minor = 0; | ||
static unsigned g_major = 0; | ||
+static bool g_is_inited = false; | ||
|
||
/* forward declaration */ | ||
void *nsview_get_ptr(void); | ||
@@ -152,6 +153,9 @@ static bool cocoagl_gfx_ctx_init(void *data) | ||
{ | ||
(void)data; | ||
|
||
+ if (g_is_inited) | ||
+ return true; | ||
+ | ||
#if defined(HAVE_COCOA) | ||
CocoaView *g_view = (CocoaView*)nsview_get_ptr(); | ||
#if MAC_OS_X_VERSION_10_7 | ||
@@ -196,6 +200,11 @@ static bool cocoagl_gfx_ctx_init(void *data) | ||
[g_context makeCurrentContext]; | ||
// Make sure the view was created | ||
[CocoaView get]; | ||
+#if defined(HAVE_COCOA) | ||
+ [NSApp setDelegate:g_view]; | ||
+#endif | ||
+ | ||
+ g_is_inited = true; | ||
return true; | ||
} | ||
|
||
@@ -221,6 +230,8 @@ static void cocoagl_gfx_ctx_destroy(void *data) | ||
#endif | ||
[GLContextClass clearCurrentContext]; | ||
g_context = nil; | ||
+ | ||
+ g_is_inited = false; | ||
} | ||
|
||
static bool cocoagl_gfx_ctx_bind_api(void *data, enum gfx_ctx_api api, unsigned major, unsigned minor) | ||
diff --git a/pkg/apple/OSX/Info.plist b/pkg/apple/OSX/Info.plist | ||
index 8d59658..af95482 100644 | ||
--- a/pkg/apple/OSX/Info.plist | ||
+++ b/pkg/apple/OSX/Info.plist | ||
@@ -41,8 +41,6 @@ | ||
<true/> | ||
<key>NSHumanReadableCopyright</key> | ||
<string>Copyright © 2015 RetroArch. All rights reserved.</string> | ||
- <key>NSMainNibFile</key> | ||
- <string>MainMenu</string> | ||
<key>NSPrincipalClass</key> | ||
<string>RApplication</string> | ||
</dict> | ||
diff --git a/pkg/apple/RetroArch.xcodeproj/project.pbxproj b/pkg/apple/RetroArch.xcodeproj/project.pbxproj | ||
index a7c1b57..e48f0bf 100644 | ||
--- a/pkg/apple/RetroArch.xcodeproj/project.pbxproj | ||
+++ b/pkg/apple/RetroArch.xcodeproj/project.pbxproj | ||
@@ -7,9 +7,7 @@ | ||
objects = { | ||
|
||
/* Begin PBXBuildFile section */ | ||
- 1DDD58160DA1D0A300B32029 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1DDD58140DA1D0A300B32029 /* MainMenu.xib */; }; | ||
500845251B89300700CE6073 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; }; | ||
- 500845261B89300700CE6073 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1DDD58140DA1D0A300B32029 /* MainMenu.xib */; }; | ||
500845271B89300700CE6073 /* retroarch.icns in Resources */ = {isa = PBXBuildFile; fileRef = 84DD5EB71A89F1C7007336C1 /* retroarch.icns */; }; | ||
500845291B89300700CE6073 /* griffin_objc.m in Sources */ = {isa = PBXBuildFile; fileRef = 509F0C9C1AA23AFC00619ECC /* griffin_objc.m */; }; | ||
5008452A1B89300700CE6073 /* griffin.c in Sources */ = {isa = PBXBuildFile; fileRef = 840222FB1A889EE2009AB261 /* griffin.c */; }; | ||
@@ -75,7 +73,6 @@ | ||
|
||
/* Begin PBXFileReference section */ | ||
089C165DFE840E0CC02AAC07 /* InfoPlist.strings */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = InfoPlist.strings; path = OSX/en.lproj/InfoPlist.strings; sourceTree = "<group>"; }; | ||
- 1DDD58150DA1D0A300B32029 /* MainMenu.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = MainMenu.xib; path = OSX/en.lproj/MainMenu.xib; sourceTree = "<group>"; }; | ||
29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = "<absolute>"; }; | ||
5008453A1B89300700CE6073 /* RetroArch copy.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "RetroArch copy.app"; sourceTree = BUILT_PRODUCTS_DIR; }; | ||
5008453B1B89300700CE6073 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "Info.plist"; path = "/../../pkg/apple/OSX/Info.plist"; sourceTree = SOURCE_ROOT; }; | ||
@@ -196,7 +193,6 @@ | ||
84DD5EB71A89F1C7007336C1 /* retroarch.icns */, | ||
8D1107310486CEB800E47090 /* Info.plist */, | ||
089C165CFE840E0CC02AAC07 /* InfoPlist.strings */, | ||
- 1DDD58140DA1D0A300B32029 /* MainMenu.xib */, | ||
); | ||
name = Resources; | ||
sourceTree = "<group>"; | ||
@@ -301,7 +297,6 @@ | ||
buildActionMask = 2147483647; | ||
files = ( | ||
500845251B89300700CE6073 /* InfoPlist.strings in Resources */, | ||
- 500845261B89300700CE6073 /* MainMenu.xib in Resources */, | ||
500845271B89300700CE6073 /* retroarch.icns in Resources */, | ||
); | ||
runOnlyForDeploymentPostprocessing = 0; | ||
@@ -311,7 +306,6 @@ | ||
buildActionMask = 2147483647; | ||
files = ( | ||
8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */, | ||
- 1DDD58160DA1D0A300B32029 /* MainMenu.xib in Resources */, | ||
84DD5EB81A89F1C7007336C1 /* retroarch.icns in Resources */, | ||
); | ||
runOnlyForDeploymentPostprocessing = 0; | ||
@@ -348,14 +342,6 @@ | ||
name = InfoPlist.strings; | ||
sourceTree = "<group>"; | ||
}; | ||
- 1DDD58140DA1D0A300B32029 /* MainMenu.xib */ = { | ||
- isa = PBXVariantGroup; | ||
- children = ( | ||
- 1DDD58150DA1D0A300B32029 /* MainMenu.xib */, | ||
- ); | ||
- name = MainMenu.xib; | ||
- sourceTree = "<group>"; | ||
- }; | ||
/* End PBXVariantGroup section */ | ||
|
||
/* Begin XCBuildConfiguration section */ | ||
diff --git a/ui/drivers/ui_cocoa.m b/ui/drivers/ui_cocoa.m | ||
index 5dde6f9..37cd066 100644 | ||
--- a/ui/drivers/ui_cocoa.m | ||
+++ b/ui/drivers/ui_cocoa.m | ||
@@ -421,10 +421,50 @@ extern void action_ok_push_quick_menu(void); | ||
|
||
@end | ||
|
||
+static void setup_appkit(void) | ||
+{ | ||
+ [NSAutoreleasePool new]; | ||
+ [NSApplication sharedApplication]; | ||
+ | ||
+ /* Might be Snow Leopard (10.6) only and up */ | ||
+ [NSApp setActivationPolicy:NSApplicationActivationPolicyRegular]; | ||
+ | ||
+ id menubar = [[NSMenu new] autorelease]; | ||
+ id appMenuItem = [[NSMenuItem new] autorelease]; | ||
+ | ||
+ [menubar addItem:appMenuItem]; | ||
+ [NSApp setMainMenu:menubar]; | ||
+ | ||
+ /* Add 'Quit' to menu */ | ||
+ id appMenu = [[NSMenu new] autorelease]; | ||
+ id appName = [[NSProcessInfo processInfo] processName]; | ||
+ id quitTitle = BOXSTRING("Quit"); | ||
+ id quitMenuItem = [[[NSMenuItem alloc] initWithTitle:quitTitle | ||
+ action:@selector(terminate:) keyEquivalent:BOXSTRING("q")] autorelease]; | ||
+ [appMenu addItem:quitMenuItem]; | ||
+ [appMenuItem setSubmenu:appMenu]; | ||
+ | ||
+ /* Create a window and activate the application */ | ||
+ id window = [[[NSWindow alloc] initWithContentRect:NSMakeRect(0, 0, 200, 200) styleMask:NSTitledWindowMask backing:NSBackingStoreBuffered defer:NO] autorelease]; | ||
+ [window cascadeTopLeftFromPoint:NSMakePoint(20,20)]; | ||
+ [window setTitle:appName]; | ||
+ [window makeKeyAndOrderFront:nil]; | ||
+ | ||
+ cocoagl_gfx_ctx_init(NULL); | ||
+ [window setContentView:(CocoaView*)nsview_get_ptr()]; | ||
+ | ||
+ /* Start the application */ | ||
+ [NSApp activateIgnoringOtherApps:YES]; /* Brings application to front on startup */ | ||
+ [NSApp run]; | ||
+} | ||
+ | ||
int main(int argc, char *argv[]) | ||
{ | ||
waiting_argc = argc; | ||
waiting_argv = argv; | ||
+ | ||
+ setup_appkit(); | ||
+ | ||
return NSApplicationMain(argc, (const char **) argv); | ||
} | ||
|