first step to get cocoa events

git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1857 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
tmator 2009-01-12 20:52:45 +00:00
parent d9511addf3
commit a255ea66cf
7 changed files with 114 additions and 56 deletions

View file

@ -17,6 +17,10 @@
#include "Thread.h"
#include "PowerPC/PowerPC.h"
#if defined(HAVE_COCOA) && HAVE_COCOA
#include "cocoaApp.h"
#endif
#include "BootManager.h"
void* g_pCodeWindow = NULL;
void* main_frame = NULL;
@ -86,11 +90,28 @@ void Host_UpdateStatus()
void Host_SetWiiMoteConnectionState(int _State) {}
//for cocoa we need to hijack the main to get event
#if defined(HAVE_COCOA) && HAVE_COCOA
int appleMain(int argc, char *argv[]);
int main(int argc, char *argv[])
{
cocoaCreateApp();
return appleMain(argc, argv);
}
int appleMain(int argc, char *argv[])
#else
// Include SDL header so it can hijack main().
#if defined(USE_SDL) && USE_SDL
#include <SDL.h>
#endif
int main(int argc, char* argv[])
#endif
{
gengetopt_args_info args_info;

View file

@ -44,13 +44,29 @@ if wxenv['HAVE_WX']:
libs = [ 'debwx' ] + libs
if wxenv['HAVE_COCOA']:
files += [ 'cocoaApp.m', ]
compileFlags = [
'-x',
'objective-c++',
]
wxenv.Append(
CXXFLAGS = compileFlags,
LINKFLAGS = [
'-pthread',
],
LIBS = libs
)
else:
wxenv.Append(
LINKFLAGS = [
'-pthread',
],
LIBS = libs
)
wxenv.Append(
LINKFLAGS = [
'-pthread',
],
LIBS = libs
)
if sys.platform == 'darwin':
exeGUI = env['binary_dir'] + 'Dolphin.app/Contents/MacOS/Dolphin'

View file

@ -0,0 +1,11 @@
#ifdef __cplusplus
extern "C"
{
#endif
void cocoaCreateApp();
#ifdef __cplusplus
}
#endif

View file

@ -0,0 +1,49 @@
#import "cocoaApp.h"
#import <Cocoa/Cocoa.h>
@implementation NSApplication(i)
- (void)appRunning
{
_running = 1;
}
@end
@interface cocoaAppDelegate : NSObject
- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender;
@end
@implementation cocoaAppDelegate : NSObject
- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender
{
return NSTerminateCancel;
}
@end
void cocoaCreateApp()
{
ProcessSerialNumber psn;
NSAutoreleasePool *pool;
if (!GetCurrentProcess(&psn)) {
TransformProcessType(&psn, kProcessTransformToForegroundApplication);
SetFrontProcess(&psn);
}
pool = [[NSAutoreleasePool alloc] init];
if (NSApp == nil) {
[NSApplication sharedApplication];
//TODO : Create menu
[NSApp finishLaunching];
}
if ([NSApp delegate] == nil) {
[NSApp setDelegate:[[cocoaAppDelegate alloc] init]];
}
[NSApp appRunning];
[pool release];
}

View file

@ -6,18 +6,27 @@ import sys
name = "Plugin_PadSimple"
if not env['HAVE_X11']:
print name + " must have X11 to be built"
Return()
if not env['HAVE_COCOA']:
print name + " must have X11 to be built"
Return()
if env['GLTEST']:
print name + " Doesn't work with testgl"
Return()
files = [
"PadSimple.cpp",
]
padenv = env.Clone()
if padenv['HAVE_COCOA']:
compileFlags = [
'-x',
'objective-c++',
]
if padenv['HAVE_WX']:
files += [
"GUI/ConfigDlg.cpp",

View file

@ -230,7 +230,6 @@ bool OpenGL_Create(SVideoInitialize &_VideoInitialize, int _iwidth, int _iheight
//setup ogl to use double buffering
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
#elif defined(HAVE_COCOA) && HAVE_COCOA
cocoaGLCreateApp();
GLWin.width = nBackbufferWidth;
GLWin.height = nBackbufferHeight;
GLWin.cocoaWin = cocoaGLCreateWindow(GLWin.width, GLWin.height);

View file

@ -1,52 +1,5 @@
#import "cocoaGL.h"
@implementation NSApplication(i)
- (void)appRunning
{
_running = 1;
}
@end
@interface cocoaAppDelegate : NSObject
- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender;
@end
@implementation cocoaAppDelegate : NSObject
- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender
{
return NSTerminateCancel;
}
@end
void cocoaGLCreateApp()
{
ProcessSerialNumber psn;
NSAutoreleasePool *pool;
if (!GetCurrentProcess(&psn)) {
TransformProcessType(&psn, kProcessTransformToForegroundApplication);
SetFrontProcess(&psn);
}
pool = [[NSAutoreleasePool alloc] init];
if (NSApp == nil) {
[NSApplication sharedApplication];
//TODO : Create menu
[NSApp finishLaunching];
}
if ([NSApp delegate] == nil) {
[NSApp setDelegate:[[cocoaAppDelegate alloc] init]];
}
[NSApp appRunning];
[pool release];
}
NSWindow *cocoaGLCreateWindow(int w,int h)
{