forked from joejulian/gio
5326ca5fbe
The Nix version of the macOS toolchain has difficulties compiling Objective-C modules; disable modules instead of figuring out why. It also doesn't include any frameworks automatically; add them explicitly. While here, move suppression of OpenGL deprecation to a GL-specific file. Signed-off-by: Elias Naur <mail@eliasnaur.com>
48 lines
1.0 KiB
Go
48 lines
1.0 KiB
Go
// SPDX-License-Identifier: Unlicense OR MIT
|
|
|
|
//go:build darwin && !ios && !nometal
|
|
// +build darwin,!ios,!nometal
|
|
|
|
package app
|
|
|
|
/*
|
|
#cgo CFLAGS: -Werror -xobjective-c -fobjc-arc
|
|
|
|
#import <AppKit/AppKit.h>
|
|
#import <QuartzCore/CAMetalLayer.h>
|
|
#include <CoreFoundation/CoreFoundation.h>
|
|
|
|
CALayer *gio_layerFactory(void) {
|
|
@autoreleasepool {
|
|
return [CAMetalLayer layer];
|
|
}
|
|
}
|
|
|
|
static CFTypeRef getMetalLayer(CFTypeRef viewRef) {
|
|
@autoreleasepool {
|
|
NSView *view = (__bridge NSView *)viewRef;
|
|
return CFBridgingRetain(view.layer);
|
|
}
|
|
}
|
|
|
|
static void resizeDrawable(CFTypeRef viewRef, CFTypeRef layerRef) {
|
|
@autoreleasepool {
|
|
NSView *view = (__bridge NSView *)viewRef;
|
|
CAMetalLayer *layer = (__bridge CAMetalLayer *)layerRef;
|
|
CGSize size = layer.bounds.size;
|
|
size.width *= layer.contentsScale;
|
|
size.height *= layer.contentsScale;
|
|
layer.drawableSize = size;
|
|
}
|
|
}
|
|
*/
|
|
import "C"
|
|
|
|
func getMetalLayer(view C.CFTypeRef) C.CFTypeRef {
|
|
return C.getMetalLayer(view)
|
|
}
|
|
|
|
func resizeDrawable(view, layer C.CFTypeRef) {
|
|
C.resizeDrawable(view, layer)
|
|
}
|