From 3c979825dbad24f59bb4619fe452f1927ba164b2 Mon Sep 17 00:00:00 2001 From: Hajime Hoshi Date: Sun, 24 Nov 2013 02:00:09 +0900 Subject: [PATCH] Remove EbitenWindow.glContext_ --- ui/cocoa/ebiten_window.c | 30 +----------------------------- ui/cocoa/ebiten_window.h | 3 --- ui/cocoa/mainloop.c | 27 ++++++++++++++++++++++++--- 3 files changed, 25 insertions(+), 35 deletions(-) diff --git a/ui/cocoa/ebiten_window.c b/ui/cocoa/ebiten_window.c index 17566b720..ceb3fb95f 100644 --- a/ui/cocoa/ebiten_window.c +++ b/ui/cocoa/ebiten_window.c @@ -6,9 +6,7 @@ #import "ebiten_content_view.h" -@implementation EbitenWindow { - NSOpenGLContext* glContext_; -} +@implementation EbitenWindow - (id)initWithSize:(NSSize)size { NSUInteger style = (NSTitledWindowMask | NSClosableWindowMask | @@ -41,23 +39,6 @@ return self; } -- (void)initializeGLContext { - NSOpenGLPixelFormatAttribute attributes[] = { - NSOpenGLPFAWindow, - NSOpenGLPFADoubleBuffer, - NSOpenGLPFAAccelerated, - NSOpenGLPFADepthSize, 32, - 0, - }; - NSOpenGLPixelFormat* format = [[NSOpenGLPixelFormat alloc] - initWithAttributes:attributes]; - self->glContext_ = [[NSOpenGLContext alloc] initWithFormat:format - shareContext:nil]; - [self->glContext_ makeCurrentContext]; - - [format release]; -} - - (BOOL)windowShouldClose:(id)sender { if ([sender isDocumentEdited]) { // TODO: add the application's name @@ -86,15 +67,6 @@ } } -- (void)beginDrawing { - [self->glContext_ setView:[self contentView]]; - glClear(GL_COLOR_BUFFER_BIT); -} - -- (void)endDrawing { - [self->glContext_ flushBuffer]; -} - - (BOOL)canBecomeMainWindow { return YES; } diff --git a/ui/cocoa/ebiten_window.h b/ui/cocoa/ebiten_window.h index 5a911efe1..9e736e883 100644 --- a/ui/cocoa/ebiten_window.h +++ b/ui/cocoa/ebiten_window.h @@ -8,9 +8,6 @@ @interface EbitenWindow : NSWindow - (id)initWithSize:(NSSize)size; -- (void)initializeGLContext; -- (void)beginDrawing; -- (void)endDrawing; @end diff --git a/ui/cocoa/mainloop.c b/ui/cocoa/mainloop.c index 11a97c4c8..6cd7dfba6 100644 --- a/ui/cocoa/mainloop.c +++ b/ui/cocoa/mainloop.c @@ -1,10 +1,13 @@ // -*- objc -*- #include +#include #import "ebiten_controller.h" #import "ebiten_window.h" +static NSOpenGLContext* glContext_; + void StartApplication() { EbitenController* controller = [[EbitenController alloc] init]; NSApplication* app = [NSApplication sharedApplication]; @@ -14,13 +17,30 @@ void StartApplication() { [app activateIgnoringOtherApps:YES]; } +void* CreateGLContext() { + NSOpenGLPixelFormatAttribute attributes[] = { + NSOpenGLPFAWindow, + NSOpenGLPFADoubleBuffer, + NSOpenGLPFAAccelerated, + NSOpenGLPFADepthSize, 32, + 0, + }; + NSOpenGLPixelFormat* format = [[NSOpenGLPixelFormat alloc] + initWithAttributes:attributes]; + NSOpenGLContext* glContext = [[NSOpenGLContext alloc] initWithFormat:format + shareContext:nil]; + [format release]; + return glContext; +} + void* CreateWindow(size_t width, size_t height, const char* title) { NSSize size = NSMakeSize(width, height); EbitenWindow* window = [[EbitenWindow alloc] initWithSize:size]; [window setTitle: [[NSString alloc] initWithUTF8String:title]]; [window makeKeyAndOrderFront:nil]; - [window initializeGLContext]; + glContext_ = CreateGLContext(); + [glContext_ makeCurrentContext]; return window; } @@ -38,9 +58,10 @@ void PollEvents(void) { } void BeginDrawing(void* window) { - [(EbitenWindow*)window beginDrawing]; + [glContext_ setView:[(EbitenWindow*)window contentView]]; + glClear(GL_COLOR_BUFFER_BIT); } void EndDrawing(void* window) { - [(EbitenWindow*)window endDrawing]; + [glContext_ flushBuffer]; }