diff options
| author | Soren Jorvang <soren.jorvang@gmail.com> | 2010-06-04 05:00:37 +0000 |
|---|---|---|
| committer | Soren Jorvang <soren.jorvang@gmail.com> | 2010-06-04 05:00:37 +0000 |
| commit | 1fa79f1f99e4122a49567f458336dbcd03fdd371 (patch) | |
| tree | ad60233a980cdc80b971a028cf37681d1e188d41 /Source | |
| parent | 3ab27a7d873a5500037978306d721c63e570c692 (diff) | |
Revert parts of r5576 and r5598 for Sonicadvance1's sake.
This reenables the option for building without wx on OS X,
but still leaves wxgl as the default.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@5600 8ced0084-cf51-0410-be5f-012b33b47a6e
Diffstat (limited to 'Source')
| -rw-r--r-- | Source/Plugins/Plugin_VideoSoftware/Src/cocoaGL.h | 29 | ||||
| -rwxr-xr-x | Source/Plugins/Plugin_VideoSoftware/Src/cocoaGL.m | 149 |
2 files changed, 178 insertions, 0 deletions
diff --git a/Source/Plugins/Plugin_VideoSoftware/Src/cocoaGL.h b/Source/Plugins/Plugin_VideoSoftware/Src/cocoaGL.h new file mode 100644 index 0000000000..cdd2a70650 --- /dev/null +++ b/Source/Plugins/Plugin_VideoSoftware/Src/cocoaGL.h @@ -0,0 +1,29 @@ +#import <Cocoa/Cocoa.h> +#import <OpenGL/CGLRenderers.h> + +#ifdef __cplusplus +extern "C" +{ +#endif + + +void cocoaGLCreateApp(); + +NSWindow *cocoaGLCreateWindow(int w,int h); + +void cocoaGLSetTitle(NSWindow *win, const char *title); + +void cocoaGLMakeCurrent(NSOpenGLContext *ctx, NSWindow *win); + +NSOpenGLContext* cocoaGLInit(int mode); + +void cocoaGLDelete(NSOpenGLContext *ctx); + +void cocoaGLDeleteWindow(NSWindow *window); + +void cocoaGLSwap(NSOpenGLContext *ctx,NSWindow *window); + +#ifdef __cplusplus +} +#endif + diff --git a/Source/Plugins/Plugin_VideoSoftware/Src/cocoaGL.m b/Source/Plugins/Plugin_VideoSoftware/Src/cocoaGL.m new file mode 100755 index 0000000000..6a821635e2 --- /dev/null +++ b/Source/Plugins/Plugin_VideoSoftware/Src/cocoaGL.m @@ -0,0 +1,149 @@ +#import "cocoaGL.h" + +NSWindow *cocoaGLCreateWindow(int w,int h) +{ + + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + NSWindow *window; + window = [[NSWindow alloc] initWithContentRect:NSMakeRect(50,50,w,h) + styleMask:NSTitledWindowMask | NSResizableWindowMask + backing:NSBackingStoreBuffered + defer:FALSE]; + [window setReleasedWhenClosed: YES]; + + [window setTitle:@"Dolphin on OSX"]; + //[window makeKeyAndOrderFront: nil]; + + [pool release]; + + return window; +} + +void cocoaGLSetTitle(NSWindow *win, const char *title) +{ + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + + [win setTitle: [[[NSString alloc] initWithCString: title encoding: NSASCIIStringEncoding] autorelease]]; + + [pool release]; +} + +void cocoaGLMakeCurrent(NSOpenGLContext *ctx, NSWindow *win) +{ + NSAutoreleasePool *pool; + + pool = [[NSAutoreleasePool alloc] init]; + + int value = 0; + [ctx setValues:&value forParameter:NSOpenGLCPSwapInterval]; + + if (ctx) { + [ctx setView:[win contentView]]; + [ctx update]; + [ctx makeCurrentContext]; + } + else + [NSOpenGLContext clearCurrentContext]; + + [pool release]; +} + + + +NSOpenGLContext* cocoaGLInit(int mode) +{ + NSAutoreleasePool *pool; + + NSOpenGLPixelFormatAttribute attr[32]; + NSOpenGLPixelFormat *fmt; + NSOpenGLContext *context; + int i = 0; + + pool = [[NSAutoreleasePool alloc] init]; + + attr[i++] = NSOpenGLPFADepthSize; + attr[i++] = 24; + attr[i++] = NSOpenGLPFADoubleBuffer; + + attr[i++] = NSOpenGLPFASampleBuffers; + attr[i++] = mode; + attr[i++] = NSOpenGLPFASamples; + attr[i++] = 1; + + attr[i++] = NSOpenGLPFANoRecovery; +#ifdef GL_VERSION_1_3 + +#else +#ifdef GL_VERSION_1_2 +#warning "your card only supports ogl 1.2, dolphin will use software renderer" + //if opengl < 1.3 uncomment this twoo lines to use software renderer + attr[i++] = NSOpenGLPFARendererID; + attr[i++] = kCGLRendererGenericFloatID; +#endif +#endif + attr[i++] = NSOpenGLPFAScreenMask; + attr[i++] = CGDisplayIDToOpenGLDisplayMask(CGMainDisplayID()); + + attr[i] = 0; + + fmt = [[NSOpenGLPixelFormat alloc] initWithAttributes:attr]; + if (fmt == nil) { + printf("failed to create pixel format\n"); + [pool release]; + return NULL; + } + + context = [[NSOpenGLContext alloc] initWithFormat:fmt shareContext:nil]; + + [fmt release]; + + if (context == nil) { + printf("failed to create context\n"); + [pool release]; + return NULL; + } + + [pool release]; + + return context; + +} + +void cocoaGLDelete(NSOpenGLContext *ctx) +{ + NSAutoreleasePool *pool; + + pool = [[NSAutoreleasePool alloc] init]; + + [ctx clearDrawable]; + [ctx release]; + + [pool release]; + +} +void cocoaGLDeleteWindow(NSWindow *window) +{ + + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + + [window close]; + [pool release]; + + return; +} + +void cocoaGLSwap(NSOpenGLContext *ctx,NSWindow *window) +{ + NSAutoreleasePool *pool; + + pool = [[NSAutoreleasePool alloc] init]; + [window makeKeyAndOrderFront: nil]; + + ctx = [NSOpenGLContext currentContext]; + if (ctx != nil) + [ctx flushBuffer]; + else + printf("bad cocoa gl ctx\n"); + + [pool release]; +} |
