From 2059862416eb04149f00a6dd56184d4a10d0253d Mon Sep 17 00:00:00 2001 From: Elias Naur Date: Thu, 5 Aug 2021 19:13:19 +0200 Subject: [PATCH] all: merge .m files with their .go counterparts The only reason for separate files is Objective-C callbacks into Go, or when the Go side is common, yet the Objective-C side differs from macOS to iOS. Signed-off-by: Elias Naur --- app/internal/log/log_ios.go | 6 +- app/internal/log/log_ios.m | 11 --- app/internal/wm/os_darwin.go | 17 ++++- app/internal/wm/os_darwin.m | 14 ---- app/internal/wm/os_ios.go | 75 ++++++++++++++++--- app/internal/wm/os_ios.m | 68 ------------------ app/internal/wm/os_macos.go | 106 ++++++++++++++++++++++----- app/internal/wm/os_macos.m | 123 +++++--------------------------- gpu/headless/headless_darwin.go | 3 +- gpu/headless/headless_ios.m | 4 -- gpu/headless/headless_macos.m | 4 -- 11 files changed, 194 insertions(+), 237 deletions(-) delete mode 100644 app/internal/log/log_ios.m diff --git a/app/internal/log/log_ios.go b/app/internal/log/log_ios.go index ea784144..cad4e19d 100644 --- a/app/internal/log/log_ios.go +++ b/app/internal/log/log_ios.go @@ -8,7 +8,11 @@ package log /* #cgo CFLAGS: -Werror -fmodules -fobjc-arc -x objective-c -__attribute__ ((visibility ("hidden"))) void nslog(char *str); +@import Foundation; + +static void nslog(char *str) { + NSLog(@"%@", @(str)); +} */ import "C" diff --git a/app/internal/log/log_ios.m b/app/internal/log/log_ios.m deleted file mode 100644 index 201bc36b..00000000 --- a/app/internal/log/log_ios.m +++ /dev/null @@ -1,11 +0,0 @@ -// SPDX-License-Identifier: Unlicense OR MIT - -// +build darwin,ios - -@import Foundation; - -#include "_cgo_export.h" - -void nslog(char *str) { - NSLog(@"%@", @(str)); -} diff --git a/app/internal/wm/os_darwin.go b/app/internal/wm/os_darwin.go index 9ef3c096..1aed0609 100644 --- a/app/internal/wm/os_darwin.go +++ b/app/internal/wm/os_darwin.go @@ -6,8 +6,6 @@ package wm #include __attribute__ ((visibility ("hidden"))) void gio_wakeupMainThread(void); -__attribute__ ((visibility ("hidden"))) NSUInteger gio_nsstringLength(CFTypeRef str); -__attribute__ ((visibility ("hidden"))) void gio_nsstringGetCharacters(CFTypeRef str, unichar *chars, NSUInteger loc, NSUInteger length); __attribute__ ((visibility ("hidden"))) CFTypeRef gio_createDisplayLink(void); __attribute__ ((visibility ("hidden"))) void gio_releaseDisplayLink(CFTypeRef dl); __attribute__ ((visibility ("hidden"))) int gio_startDisplayLink(CFTypeRef dl); @@ -16,7 +14,20 @@ __attribute__ ((visibility ("hidden"))) void gio_setDisplayLinkDisplay(CFTypeRef __attribute__ ((visibility ("hidden"))) void gio_hideCursor(); __attribute__ ((visibility ("hidden"))) void gio_showCursor(); __attribute__ ((visibility ("hidden"))) void gio_setCursor(NSUInteger curID); -__attribute__ ((visibility ("hidden"))) bool gio_isMainThread(); + +static bool gio_isMainThread() { + return [NSThread isMainThread]; +} + +static NSUInteger gio_nsstringLength(CFTypeRef cstr) { + NSString *str = (__bridge NSString *)cstr; + return [str length]; +} + +static void gio_nsstringGetCharacters(CFTypeRef cstr, unichar *chars, NSUInteger loc, NSUInteger length) { + NSString *str = (__bridge NSString *)cstr; + [str getCharacters:chars range:NSMakeRange(loc, length)]; +} */ import "C" import ( diff --git a/app/internal/wm/os_darwin.m b/app/internal/wm/os_darwin.m index 8d37371e..772cc28d 100644 --- a/app/internal/wm/os_darwin.m +++ b/app/internal/wm/os_darwin.m @@ -10,17 +10,3 @@ void gio_wakeupMainThread(void) { gio_dispatchMainFuncs(); }); } - -bool gio_isMainThread() { - return [NSThread isMainThread]; -} - -NSUInteger gio_nsstringLength(CFTypeRef cstr) { - NSString *str = (__bridge NSString *)cstr; - return [str length]; -} - -void gio_nsstringGetCharacters(CFTypeRef cstr, unichar *chars, NSUInteger loc, NSUInteger length) { - NSString *str = (__bridge NSString *)cstr; - [str getCharacters:chars range:NSMakeRange(loc, length)]; -} diff --git a/app/internal/wm/os_ios.go b/app/internal/wm/os_ios.go index d9e77cef..34f6c3e5 100644 --- a/app/internal/wm/os_ios.go +++ b/app/internal/wm/os_ios.go @@ -18,14 +18,73 @@ struct drawParams { CGFloat top, right, bottom, left; }; -__attribute__ ((visibility ("hidden"))) void gio_showTextInput(CFTypeRef viewRef); -__attribute__ ((visibility ("hidden"))) void gio_hideTextInput(CFTypeRef viewRef); -__attribute__ ((visibility ("hidden"))) void gio_addLayerToView(CFTypeRef viewRef, CFTypeRef layerRef); -__attribute__ ((visibility ("hidden"))) void gio_updateView(CFTypeRef viewRef, CFTypeRef layerRef); -__attribute__ ((visibility ("hidden"))) void gio_removeLayer(CFTypeRef layerRef); -__attribute__ ((visibility ("hidden"))) struct drawParams gio_viewDrawParams(CFTypeRef viewRef); -__attribute__ ((visibility ("hidden"))) CFTypeRef gio_readClipboard(void); -__attribute__ ((visibility ("hidden"))) void gio_writeClipboard(unichar *chars, NSUInteger length); +static void gio_writeClipboard(unichar *chars, NSUInteger length) { + @autoreleasepool { + NSString *s = [NSString string]; + if (length > 0) { + s = [NSString stringWithCharacters:chars length:length]; + } + UIPasteboard *p = UIPasteboard.generalPasteboard; + p.string = s; + } +} + +static CFTypeRef gio_readClipboard(void) { + @autoreleasepool { + UIPasteboard *p = UIPasteboard.generalPasteboard; + return (__bridge_retained CFTypeRef)p.string; + } +} + +static void gio_showTextInput(CFTypeRef viewRef) { + UIView *view = (__bridge UIView *)viewRef; + [view becomeFirstResponder]; +} + +static void gio_hideTextInput(CFTypeRef viewRef) { + UIView *view = (__bridge UIView *)viewRef; + [view resignFirstResponder]; +} + +static void gio_addLayerToView(CFTypeRef viewRef, CFTypeRef layerRef) { + UIView *view = (__bridge UIView *)viewRef; + CALayer *layer = (__bridge CALayer *)layerRef; + [view.layer addSublayer:layer]; +} + +static void gio_updateView(CFTypeRef viewRef, CFTypeRef layerRef) { + UIView *view = (__bridge UIView *)viewRef; + CAEAGLLayer *layer = (__bridge CAEAGLLayer *)layerRef; + layer.contentsScale = view.contentScaleFactor; + layer.bounds = view.bounds; +} + +static void gio_removeLayer(CFTypeRef layerRef) { + CALayer *layer = (__bridge CALayer *)layerRef; + [layer removeFromSuperlayer]; +} + +static struct drawParams gio_viewDrawParams(CFTypeRef viewRef) { + UIView *v = (__bridge UIView *)viewRef; + struct drawParams params; + CGFloat scale = v.layer.contentsScale; + // Use 163 as the standard ppi on iOS. + params.dpi = 163*scale; + params.sdpi = params.dpi; + UIEdgeInsets insets = v.layoutMargins; + if (@available(iOS 11.0, tvOS 11.0, *)) { + UIFontMetrics *metrics = [UIFontMetrics defaultMetrics]; + params.sdpi = [metrics scaledValueForValue:params.sdpi]; + insets = v.safeAreaInsets; + } + params.width = v.bounds.size.width*scale; + params.height = v.bounds.size.height*scale; + params.top = insets.top*scale; + params.right = insets.right*scale; + params.bottom = insets.bottom*scale; + params.left = insets.left*scale; + return params; +} */ import "C" diff --git a/app/internal/wm/os_ios.m b/app/internal/wm/os_ios.m index f1e556d1..f37999f8 100644 --- a/app/internal/wm/os_ios.m +++ b/app/internal/wm/os_ios.m @@ -229,74 +229,6 @@ NSArray *_keyCommands; } @end -void gio_writeClipboard(unichar *chars, NSUInteger length) { - @autoreleasepool { - NSString *s = [NSString string]; - if (length > 0) { - s = [NSString stringWithCharacters:chars length:length]; - } - UIPasteboard *p = UIPasteboard.generalPasteboard; - p.string = s; - } -} - -CFTypeRef gio_readClipboard(void) { - @autoreleasepool { - UIPasteboard *p = UIPasteboard.generalPasteboard; - return (__bridge_retained CFTypeRef)p.string; - } -} - -void gio_showTextInput(CFTypeRef viewRef) { - UIView *view = (__bridge UIView *)viewRef; - [view becomeFirstResponder]; -} - -void gio_hideTextInput(CFTypeRef viewRef) { - UIView *view = (__bridge UIView *)viewRef; - [view resignFirstResponder]; -} - -void gio_addLayerToView(CFTypeRef viewRef, CFTypeRef layerRef) { - UIView *view = (__bridge UIView *)viewRef; - CALayer *layer = (__bridge CALayer *)layerRef; - [view.layer addSublayer:layer]; -} - -void gio_updateView(CFTypeRef viewRef, CFTypeRef layerRef) { - UIView *view = (__bridge UIView *)viewRef; - CAEAGLLayer *layer = (__bridge CAEAGLLayer *)layerRef; - layer.contentsScale = view.contentScaleFactor; - layer.bounds = view.bounds; -} - -void gio_removeLayer(CFTypeRef layerRef) { - CALayer *layer = (__bridge CALayer *)layerRef; - [layer removeFromSuperlayer]; -} - -struct drawParams gio_viewDrawParams(CFTypeRef viewRef) { - UIView *v = (__bridge UIView *)viewRef; - struct drawParams params; - CGFloat scale = v.layer.contentsScale; - // Use 163 as the standard ppi on iOS. - params.dpi = 163*scale; - params.sdpi = params.dpi; - UIEdgeInsets insets = v.layoutMargins; - if (@available(iOS 11.0, tvOS 11.0, *)) { - UIFontMetrics *metrics = [UIFontMetrics defaultMetrics]; - params.sdpi = [metrics scaledValueForValue:params.sdpi]; - insets = v.safeAreaInsets; - } - params.width = v.bounds.size.width*scale; - params.height = v.bounds.size.height*scale; - params.top = insets.top*scale; - params.right = insets.right*scale; - params.bottom = insets.bottom*scale; - params.left = insets.left*scale; - return params; -} - CFTypeRef gio_createDisplayLink(void) { CADisplayLink *dl = [CADisplayLink displayLinkWithTarget:[GioView class] selector:@selector(onFrameCallback:)]; dl.paused = YES; diff --git a/app/internal/wm/os_macos.go b/app/internal/wm/os_macos.go index cac2bdd4..47689ff8 100644 --- a/app/internal/wm/os_macos.go +++ b/app/internal/wm/os_macos.go @@ -35,24 +35,98 @@ import ( #define GIO_MOUSE_SCROLL 4 __attribute__ ((visibility ("hidden"))) void gio_main(void); -__attribute__ ((visibility ("hidden"))) CGFloat gio_viewWidth(CFTypeRef viewRef); -__attribute__ ((visibility ("hidden"))) CGFloat gio_viewHeight(CFTypeRef viewRef); -__attribute__ ((visibility ("hidden"))) CGFloat gio_getViewBackingScale(CFTypeRef viewRef); -__attribute__ ((visibility ("hidden"))) CGFloat gio_getScreenBackingScale(void); -__attribute__ ((visibility ("hidden"))) CFTypeRef gio_readClipboard(void); -__attribute__ ((visibility ("hidden"))) void gio_writeClipboard(unichar *chars, NSUInteger length); -__attribute__ ((visibility ("hidden"))) void gio_setNeedsDisplay(CFTypeRef viewRef); -__attribute__ ((visibility ("hidden"))) void gio_toggleFullScreen(CFTypeRef windowRef); __attribute__ ((visibility ("hidden"))) CFTypeRef gio_createView(void); __attribute__ ((visibility ("hidden"))) CFTypeRef gio_createWindow(CFTypeRef viewRef, const char *title, CGFloat width, CGFloat height, CGFloat minWidth, CGFloat minHeight, CGFloat maxWidth, CGFloat maxHeight); -__attribute__ ((visibility ("hidden"))) void gio_makeKeyAndOrderFront(CFTypeRef windowRef); -__attribute__ ((visibility ("hidden"))) NSPoint gio_cascadeTopLeftFromPoint(CFTypeRef windowRef, NSPoint topLeft); -__attribute__ ((visibility ("hidden"))) void gio_close(CFTypeRef windowRef); -__attribute__ ((visibility ("hidden"))) void gio_setSize(CFTypeRef windowRef, CGFloat width, CGFloat height); -__attribute__ ((visibility ("hidden"))) void gio_setMinSize(CFTypeRef windowRef, CGFloat width, CGFloat height); -__attribute__ ((visibility ("hidden"))) void gio_setMaxSize(CFTypeRef windowRef, CGFloat width, CGFloat height); -__attribute__ ((visibility ("hidden"))) void gio_setTitle(CFTypeRef windowRef, const char *title); -__attribute__ ((visibility ("hidden"))) CFTypeRef gio_layerForView(CFTypeRef viewRef); + +static void gio_writeClipboard(unichar *chars, NSUInteger length) { + @autoreleasepool { + NSString *s = [NSString string]; + if (length > 0) { + s = [NSString stringWithCharacters:chars length:length]; + } + NSPasteboard *p = NSPasteboard.generalPasteboard; + [p declareTypes:@[NSPasteboardTypeString] owner:nil]; + [p setString:s forType:NSPasteboardTypeString]; + } +} + +static CFTypeRef gio_readClipboard(void) { + @autoreleasepool { + NSPasteboard *p = NSPasteboard.generalPasteboard; + NSString *content = [p stringForType:NSPasteboardTypeString]; + return (__bridge_retained CFTypeRef)content; + } +} + +static CGFloat gio_viewHeight(CFTypeRef viewRef) { + NSView *view = (__bridge NSView *)viewRef; + return [view bounds].size.height; +} + +static CGFloat gio_viewWidth(CFTypeRef viewRef) { + NSView *view = (__bridge NSView *)viewRef; + return [view bounds].size.width; +} + +static CGFloat gio_getScreenBackingScale(void) { + return [NSScreen.mainScreen backingScaleFactor]; +} + +static CGFloat gio_getViewBackingScale(CFTypeRef viewRef) { + NSView *view = (__bridge NSView *)viewRef; + return [view.window backingScaleFactor]; +} + +static void gio_setNeedsDisplay(CFTypeRef viewRef) { + NSView *view = (__bridge NSView *)viewRef; + [view setNeedsDisplay:YES]; +} + +static NSPoint gio_cascadeTopLeftFromPoint(CFTypeRef windowRef, NSPoint topLeft) { + NSWindow *window = (__bridge NSWindow *)windowRef; + return [window cascadeTopLeftFromPoint:topLeft]; +} + +static void gio_makeKeyAndOrderFront(CFTypeRef windowRef) { + NSWindow *window = (__bridge NSWindow *)windowRef; + [window makeKeyAndOrderFront:nil]; +} + +static void gio_toggleFullScreen(CFTypeRef windowRef) { + NSWindow *window = (__bridge NSWindow *)windowRef; + [window toggleFullScreen:nil]; +} + +static void gio_close(CFTypeRef windowRef) { + NSWindow* window = (__bridge NSWindow *)windowRef; + [window performClose:nil]; +} + +static void gio_setSize(CFTypeRef windowRef, CGFloat width, CGFloat height) { + NSWindow* window = (__bridge NSWindow *)windowRef; + NSSize size = NSMakeSize(width, height); + [window setContentSize:size]; +} + +static void gio_setMinSize(CFTypeRef windowRef, CGFloat width, CGFloat height) { + NSWindow* window = (__bridge NSWindow *)windowRef; + window.contentMinSize = NSMakeSize(width, height); +} + +static void gio_setMaxSize(CFTypeRef windowRef, CGFloat width, CGFloat height) { + NSWindow* window = (__bridge NSWindow *)windowRef; + window.contentMaxSize = NSMakeSize(width, height); +} + +static void gio_setTitle(CFTypeRef windowRef, const char *title) { + NSWindow* window = (__bridge NSWindow *)windowRef; + window.title = [NSString stringWithUTF8String: title]; +} + +static CFTypeRef gio_layerForView(CFTypeRef viewRef) { + NSView *view = (__bridge NSView *)viewRef; + return (__bridge CFTypeRef)view.layer; +} */ import "C" diff --git a/app/internal/wm/os_macos.m b/app/internal/wm/os_macos.m index 7453b9a3..ac810fb1 100644 --- a/app/internal/wm/os_macos.m +++ b/app/internal/wm/os_macos.m @@ -108,53 +108,38 @@ static void handleMouse(NSView *view, NSEvent *event, int typ, CGFloat dx, CGFlo // They will end up in a beep. } @end + // Delegates are weakly referenced from their peers. Nothing // else holds a strong reference to our window delegate, so // keep a single global reference instead. static GioWindowDelegate *globalWindowDel; -void gio_writeClipboard(unichar *chars, NSUInteger length) { - @autoreleasepool { - NSString *s = [NSString string]; - if (length > 0) { - s = [NSString stringWithCharacters:chars length:length]; - } - NSPasteboard *p = NSPasteboard.generalPasteboard; - [p declareTypes:@[NSPasteboardTypeString] owner:nil]; - [p setString:s forType:NSPasteboardTypeString]; - } +static CVReturn displayLinkCallback(CVDisplayLinkRef dl, const CVTimeStamp *inNow, const CVTimeStamp *inOutputTime, CVOptionFlags flagsIn, CVOptionFlags *flagsOut, void *displayLinkContext) { + gio_onFrameCallback(dl); + return kCVReturnSuccess; } -CFTypeRef gio_readClipboard(void) { - @autoreleasepool { - NSPasteboard *p = NSPasteboard.generalPasteboard; - NSString *content = [p stringForType:NSPasteboardTypeString]; - return (__bridge_retained CFTypeRef)content; - } +CFTypeRef gio_createDisplayLink(void) { + CVDisplayLinkRef dl; + CVDisplayLinkCreateWithActiveCGDisplays(&dl); + CVDisplayLinkSetOutputCallback(dl, displayLinkCallback, nil); + return dl; } -CGFloat gio_viewHeight(CFTypeRef viewRef) { - NSView *view = (__bridge NSView *)viewRef; - return [view bounds].size.height; +int gio_startDisplayLink(CFTypeRef dl) { + return CVDisplayLinkStart((CVDisplayLinkRef)dl); } -CGFloat gio_viewWidth(CFTypeRef viewRef) { - NSView *view = (__bridge NSView *)viewRef; - return [view bounds].size.width; +int gio_stopDisplayLink(CFTypeRef dl) { + return CVDisplayLinkStop((CVDisplayLinkRef)dl); } -CGFloat gio_getScreenBackingScale(void) { - return [NSScreen.mainScreen backingScaleFactor]; +void gio_releaseDisplayLink(CFTypeRef dl) { + CVDisplayLinkRelease((CVDisplayLinkRef)dl); } -CGFloat gio_getViewBackingScale(CFTypeRef viewRef) { - NSView *view = (__bridge NSView *)viewRef; - return [view.window backingScaleFactor]; -} - -void gio_setNeedsDisplay(CFTypeRef viewRef) { - NSView *view = (__bridge NSView *)viewRef; - [view setNeedsDisplay:YES]; +void gio_setDisplayLinkDisplay(CFTypeRef dl, uint64_t did) { + CVDisplayLinkSetCurrentCGDisplay((CVDisplayLinkRef)dl, (CGDirectDisplayID)did); } void gio_hideCursor() { @@ -200,49 +185,6 @@ void gio_setCursor(NSUInteger curID) { } } -static CVReturn displayLinkCallback(CVDisplayLinkRef dl, const CVTimeStamp *inNow, const CVTimeStamp *inOutputTime, CVOptionFlags flagsIn, CVOptionFlags *flagsOut, void *displayLinkContext) { - gio_onFrameCallback(dl); - return kCVReturnSuccess; -} - -CFTypeRef gio_createDisplayLink(void) { - CVDisplayLinkRef dl; - CVDisplayLinkCreateWithActiveCGDisplays(&dl); - CVDisplayLinkSetOutputCallback(dl, displayLinkCallback, nil); - return dl; -} - -int gio_startDisplayLink(CFTypeRef dl) { - return CVDisplayLinkStart((CVDisplayLinkRef)dl); -} - -int gio_stopDisplayLink(CFTypeRef dl) { - return CVDisplayLinkStop((CVDisplayLinkRef)dl); -} - -void gio_releaseDisplayLink(CFTypeRef dl) { - CVDisplayLinkRelease((CVDisplayLinkRef)dl); -} - -void gio_setDisplayLinkDisplay(CFTypeRef dl, uint64_t did) { - CVDisplayLinkSetCurrentCGDisplay((CVDisplayLinkRef)dl, (CGDirectDisplayID)did); -} - -NSPoint gio_cascadeTopLeftFromPoint(CFTypeRef windowRef, NSPoint topLeft) { - NSWindow *window = (__bridge NSWindow *)windowRef; - return [window cascadeTopLeftFromPoint:topLeft]; -} - -void gio_makeKeyAndOrderFront(CFTypeRef windowRef) { - NSWindow *window = (__bridge NSWindow *)windowRef; - [window makeKeyAndOrderFront:nil]; -} - -void gio_toggleFullScreen(CFTypeRef windowRef) { - NSWindow *window = (__bridge NSWindow *)windowRef; - [window toggleFullScreen:nil]; -} - CFTypeRef gio_createWindow(CFTypeRef viewRef, const char *title, CGFloat width, CGFloat height, CGFloat minWidth, CGFloat minHeight, CGFloat maxWidth, CGFloat maxHeight) { @autoreleasepool { NSRect rect = NSMakeRect(0, 0, width, height); @@ -274,37 +216,6 @@ CFTypeRef gio_createWindow(CFTypeRef viewRef, const char *title, CGFloat width, } } -void gio_close(CFTypeRef windowRef) { - NSWindow* window = (__bridge NSWindow *)windowRef; - [window performClose:nil]; -} - -void gio_setSize(CFTypeRef windowRef, CGFloat width, CGFloat height) { - NSWindow* window = (__bridge NSWindow *)windowRef; - NSSize size = NSMakeSize(width, height); - [window setContentSize:size]; -} - -void gio_setMinSize(CFTypeRef windowRef, CGFloat width, CGFloat height) { - NSWindow* window = (__bridge NSWindow *)windowRef; - window.contentMinSize = NSMakeSize(width, height); -} - -void gio_setMaxSize(CFTypeRef windowRef, CGFloat width, CGFloat height) { - NSWindow* window = (__bridge NSWindow *)windowRef; - window.contentMaxSize = NSMakeSize(width, height); -} - -void gio_setTitle(CFTypeRef windowRef, const char *title) { - NSWindow* window = (__bridge NSWindow *)windowRef; - window.title = [NSString stringWithUTF8String: title]; -} - -CFTypeRef gio_layerForView(CFTypeRef viewRef) { - NSView *view = (__bridge NSView *)viewRef; - return (__bridge CFTypeRef)view.layer; -} - CFTypeRef gio_createView(void) { @autoreleasepool { NSRect frame = NSMakeRect(0, 0, 0, 0); diff --git a/gpu/headless/headless_darwin.go b/gpu/headless/headless_darwin.go index fedc68b4..6d077bf3 100644 --- a/gpu/headless/headless_darwin.go +++ b/gpu/headless/headless_darwin.go @@ -13,7 +13,6 @@ import ( #include __attribute__ ((visibility ("hidden"))) CFTypeRef gio_headless_newContext(void); -__attribute__ ((visibility ("hidden"))) void gio_headless_releaseContext(CFTypeRef ctxRef); __attribute__ ((visibility ("hidden"))) void gio_headless_clearCurrentContext(CFTypeRef ctxRef); __attribute__ ((visibility ("hidden"))) void gio_headless_makeCurrentContext(CFTypeRef ctxRef); */ @@ -43,7 +42,7 @@ func (c *nsContext) ReleaseCurrent() { func (d *nsContext) Release() { if d.ctx != 0 { - C.gio_headless_releaseContext(d.ctx) + C.CFRelease(d.ctx) d.ctx = 0 } } diff --git a/gpu/headless/headless_ios.m b/gpu/headless/headless_ios.m index 4de4e65c..18e12aa7 100644 --- a/gpu/headless/headless_ios.m +++ b/gpu/headless/headless_ios.m @@ -7,10 +7,6 @@ #include #include "_cgo_export.h" -void gio_headless_releaseContext(CFTypeRef ctxRef) { - CFBridgingRelease(ctxRef); -} - CFTypeRef gio_headless_newContext(void) { EAGLContext *ctx = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES3]; if (ctx == nil) { diff --git a/gpu/headless/headless_macos.m b/gpu/headless/headless_macos.m index ce5dca7f..2d2d38cd 100644 --- a/gpu/headless/headless_macos.m +++ b/gpu/headless/headless_macos.m @@ -10,10 +10,6 @@ #include #include "_cgo_export.h" -void gio_headless_releaseContext(CFTypeRef ctxRef) { - CFBridgingRelease(ctxRef); -} - CFTypeRef gio_headless_newContext(void) { NSOpenGLPixelFormatAttribute attr[] = { NSOpenGLPFAOpenGLProfile, NSOpenGLProfileVersion3_2Core,