mirror of
https://github.com/hajimehoshi/ebiten.git
synced 2024-12-26 03:38:55 +01:00
Remove void*
This commit is contained in:
parent
f82241b56f
commit
cc14882cb2
@ -28,7 +28,7 @@ func main() {
|
||||
|
||||
u := cocoa.UI()
|
||||
textureFactory := cocoa.TextureFactory()
|
||||
window := u.CreateWindow(screenWidth, screenHeight, screenScale, title)
|
||||
window := u.CreateGameWindow(screenWidth, screenHeight, screenScale, title)
|
||||
|
||||
textureFactoryEvents := textureFactory.Events()
|
||||
|
||||
|
@ -45,6 +45,11 @@ void ebiten_WindowClosed(void* nativeWindow);
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)dealloc {
|
||||
[self->glContext_ release];
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
- (NSOpenGLContext*)glContext {
|
||||
return self->glContext_;
|
||||
}
|
||||
@ -73,7 +78,6 @@ void ebiten_WindowClosed(void* nativeWindow);
|
||||
(void)alert;
|
||||
(void)contextInfo;
|
||||
if (returnCode == NSAlertDefaultReturn) {
|
||||
[self->glContext_ release];
|
||||
[self close];
|
||||
ebiten_WindowClosed(self);
|
||||
}
|
||||
|
@ -34,7 +34,7 @@ void StartApplication(void) {
|
||||
[app finishLaunching];
|
||||
}
|
||||
|
||||
void* CreateGLContext(void* sharedGLContext) {
|
||||
NSOpenGLContext* CreateGLContext(NSOpenGLContext* sharedGLContext) {
|
||||
NSOpenGLPixelFormatAttribute attributes[] = {
|
||||
NSOpenGLPFAWindow,
|
||||
NSOpenGLPFADoubleBuffer,
|
||||
@ -46,13 +46,12 @@ void* CreateGLContext(void* sharedGLContext) {
|
||||
initWithAttributes:attributes];
|
||||
NSOpenGLContext* glContext =
|
||||
[[NSOpenGLContext alloc] initWithFormat:format
|
||||
shareContext:(NSOpenGLContext*)sharedGLContext];
|
||||
shareContext:sharedGLContext];
|
||||
[format release];
|
||||
return glContext;
|
||||
}
|
||||
|
||||
void* CreateWindow(size_t width, size_t height, const char* title, void* glContext_) {
|
||||
NSOpenGLContext* glContext = (NSOpenGLContext*)glContext_;
|
||||
NSWindow* CreateWindow(size_t width, size_t height, const char* title, NSOpenGLContext* glContext) {
|
||||
NSSize size = NSMakeSize(width, height);
|
||||
EbitenWindow* window = [[EbitenWindow alloc]
|
||||
initWithSize:size
|
||||
@ -87,8 +86,7 @@ void PollEvents(void) {
|
||||
}
|
||||
}
|
||||
|
||||
void UseGLContext(void* glContextPtr) {
|
||||
NSOpenGLContext* glContext = (NSOpenGLContext*)glContextPtr;
|
||||
void UseGLContext(NSOpenGLContext* glContext) {
|
||||
CGLContextObj cglContext = [glContext CGLContextObj];
|
||||
CGLLockContext(cglContext);
|
||||
[glContext makeCurrentContext];
|
||||
@ -102,16 +100,6 @@ void UnuseGLContext(void) {
|
||||
CGLUnlockContext(cglContext);
|
||||
}
|
||||
|
||||
void* GetGLContext(void* window) {
|
||||
NSOpenGLContext* GetGLContext(NSWindow* window) {
|
||||
return [(EbitenWindow*)window glContext];
|
||||
}
|
||||
|
||||
void BeginDrawing(void* window) {
|
||||
// TODO: CGLLock
|
||||
[[(EbitenWindow*)window glContext] makeCurrentContext];
|
||||
glClear(GL_COLOR_BUFFER_BIT);
|
||||
}
|
||||
|
||||
void EndDrawing(void* window) {
|
||||
[[(EbitenWindow*)window glContext] flushBuffer];
|
||||
}
|
||||
|
@ -1,17 +1,18 @@
|
||||
package cocoa
|
||||
|
||||
// void* CreateGLContext(void* sharedGLContext);
|
||||
// void UseGLContext(void* glContext);
|
||||
// @class NSOpenGLContext;
|
||||
//
|
||||
// NSOpenGLContext* CreateGLContext(NSOpenGLContext* sharedGLContext);
|
||||
// void UseGLContext(NSOpenGLContext* glContext);
|
||||
// void UnuseGLContext(void);
|
||||
//
|
||||
import "C"
|
||||
import (
|
||||
"runtime"
|
||||
"unsafe"
|
||||
)
|
||||
|
||||
type textureFactory struct {
|
||||
sharedContext unsafe.Pointer
|
||||
sharedContext *C.NSOpenGLContext
|
||||
funcs chan func()
|
||||
funcsDone chan struct{}
|
||||
}
|
||||
@ -24,7 +25,7 @@ func runTextureFactory() *textureFactory {
|
||||
ch := make(chan struct{})
|
||||
go func() {
|
||||
runtime.LockOSThread()
|
||||
t.sharedContext = C.CreateGLContext(unsafe.Pointer(nil))
|
||||
t.sharedContext = C.CreateGLContext(nil)
|
||||
close(ch)
|
||||
t.loop()
|
||||
}()
|
||||
|
@ -47,7 +47,7 @@ func TextureFactory() graphics.TextureFactory {
|
||||
return getCurrentUI()
|
||||
}
|
||||
|
||||
func (u *cocoaUI) CreateWindow(width, height, scale int, title string) ui.Window {
|
||||
func (u *cocoaUI) CreateGameWindow(width, height, scale int, title string) ui.GameWindow {
|
||||
return u.textureFactory.createWindow(u, width, height, scale, title)
|
||||
}
|
||||
|
||||
|
@ -4,11 +4,16 @@ package cocoa
|
||||
//
|
||||
// #include "input.h"
|
||||
//
|
||||
// void* CreateWindow(size_t width, size_t height, const char* title, void* glContext);
|
||||
// void* CreateGLContext(void* sharedGLContext);
|
||||
// @class NSWindow;
|
||||
// @class NSOpenGLContext;
|
||||
//
|
||||
// void* GetGLContext(void* window);
|
||||
// void UseGLContext(void* glContext);
|
||||
// typedef NSWindow* NSWindowPtr;
|
||||
//
|
||||
// NSWindow* CreateWindow(size_t width, size_t height, const char* title, NSOpenGLContext* glContext);
|
||||
// NSOpenGLContext* CreateGLContext(NSOpenGLContext* sharedGLContext);
|
||||
//
|
||||
// NSOpenGLContext* GetGLContext(NSWindow* window);
|
||||
// void UseGLContext(NSOpenGLContext* glContext);
|
||||
// void UnuseGLContext(void);
|
||||
//
|
||||
import "C"
|
||||
@ -26,7 +31,7 @@ type Window struct {
|
||||
screenHeight int
|
||||
screenScale int
|
||||
closed bool
|
||||
native unsafe.Pointer
|
||||
native *C.NSWindow
|
||||
pressedKeys map[ui.Key]struct{}
|
||||
context *opengl.Context
|
||||
funcs chan func()
|
||||
@ -34,9 +39,9 @@ type Window struct {
|
||||
events chan interface{}
|
||||
}
|
||||
|
||||
var windows = map[unsafe.Pointer]*Window{}
|
||||
var windows = map[*C.NSWindow]*Window{}
|
||||
|
||||
func runWindow(cocoaUI *cocoaUI, width, height, scale int, title string, sharedContext unsafe.Pointer) *Window {
|
||||
func runWindow(cocoaUI *cocoaUI, width, height, scale int, title string, sharedContext *C.NSOpenGLContext) *Window {
|
||||
w := &Window{
|
||||
ui: cocoaUI,
|
||||
screenWidth: width,
|
||||
@ -116,7 +121,7 @@ func (w *Window) notify(e interface{}) {
|
||||
|
||||
// Now this function is not used anywhere.
|
||||
//export ebiten_WindowSizeUpdated
|
||||
func ebiten_WindowSizeUpdated(nativeWindow unsafe.Pointer, width, height int) {
|
||||
func ebiten_WindowSizeUpdated(nativeWindow C.NSWindowPtr, width, height int) {
|
||||
w := windows[nativeWindow]
|
||||
e := ui.WindowSizeUpdatedEvent{width, height}
|
||||
w.notify(e)
|
||||
@ -141,7 +146,7 @@ var cocoaKeyCodeToKey = map[int]ui.Key{
|
||||
}
|
||||
|
||||
//export ebiten_KeyDown
|
||||
func ebiten_KeyDown(nativeWindow unsafe.Pointer, keyCode int) {
|
||||
func ebiten_KeyDown(nativeWindow C.NSWindowPtr, keyCode int) {
|
||||
key, ok := cocoaKeyCodeToKey[keyCode]
|
||||
if !ok {
|
||||
return
|
||||
@ -152,7 +157,7 @@ func ebiten_KeyDown(nativeWindow unsafe.Pointer, keyCode int) {
|
||||
}
|
||||
|
||||
//export ebiten_KeyUp
|
||||
func ebiten_KeyUp(nativeWindow unsafe.Pointer, keyCode int) {
|
||||
func ebiten_KeyUp(nativeWindow C.NSWindowPtr, keyCode int) {
|
||||
key, ok := cocoaKeyCodeToKey[keyCode]
|
||||
if !ok {
|
||||
return
|
||||
@ -163,7 +168,7 @@ func ebiten_KeyUp(nativeWindow unsafe.Pointer, keyCode int) {
|
||||
}
|
||||
|
||||
//export ebiten_MouseStateUpdated
|
||||
func ebiten_MouseStateUpdated(nativeWindow unsafe.Pointer, inputType C.InputType, cx, cy C.int) {
|
||||
func ebiten_MouseStateUpdated(nativeWindow C.NSWindowPtr, inputType C.InputType, cx, cy C.int) {
|
||||
w := windows[nativeWindow]
|
||||
|
||||
if inputType == C.InputTypeMouseUp {
|
||||
@ -190,7 +195,7 @@ func ebiten_MouseStateUpdated(nativeWindow unsafe.Pointer, inputType C.InputType
|
||||
}
|
||||
|
||||
//export ebiten_WindowClosed
|
||||
func ebiten_WindowClosed(nativeWindow unsafe.Pointer) {
|
||||
func ebiten_WindowClosed(nativeWindow C.NSWindowPtr) {
|
||||
w := windows[nativeWindow]
|
||||
w.closed = true
|
||||
w.notify(ui.WindowClosedEvent{})
|
||||
|
6
ui/ui.go
6
ui/ui.go
@ -34,10 +34,14 @@ type WindowClosedEvent struct {
|
||||
|
||||
type UI interface {
|
||||
PollEvents()
|
||||
CreateWindow(screenWidth, screenHeight, screenScale int, title string) Window
|
||||
CreateGameWindow(screenWidth, screenHeight, screenScale int, title string) GameWindow
|
||||
}
|
||||
|
||||
type Window interface {
|
||||
Events() <-chan interface{}
|
||||
}
|
||||
|
||||
type GameWindow interface {
|
||||
Draw(func(graphics.Context))
|
||||
Events() <-chan interface{}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user