summaryrefslogtreecommitdiff
path: root/Source
diff options
context:
space:
mode:
authorSoren Jorvang <soren.jorvang@gmail.com>2010-06-04 05:00:37 +0000
committerSoren Jorvang <soren.jorvang@gmail.com>2010-06-04 05:00:37 +0000
commit1fa79f1f99e4122a49567f458336dbcd03fdd371 (patch)
treead60233a980cdc80b971a028cf37681d1e188d41 /Source
parent3ab27a7d873a5500037978306d721c63e570c692 (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.h29
-rwxr-xr-xSource/Plugins/Plugin_VideoSoftware/Src/cocoaGL.m149
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];
+}