diff --git a/app/headless/headless_darwin.go b/app/headless/headless_darwin.go index 7282ae06..8b9b0e37 100644 --- a/app/headless/headless_darwin.go +++ b/app/headless/headless_darwin.go @@ -6,6 +6,8 @@ import ( "gioui.org/app/internal/glimpl" "gioui.org/gpu/backend" "gioui.org/gpu/gl" + + _ "gioui.org/app/internal/cocoainit" ) /* diff --git a/app/internal/cocoainit/cocoa_darwin.go b/app/internal/cocoainit/cocoa_darwin.go new file mode 100644 index 00000000..2a34e575 --- /dev/null +++ b/app/internal/cocoainit/cocoa_darwin.go @@ -0,0 +1,20 @@ +// SPDX-License-Identifier: Unlicense OR MIT + +// Package cocoainit initializes support for multithreaded +// programs in Cocoa. +package cocoainit + +/* +#cgo CFLAGS: -xobjective-c -fmodules -fobjc-arc +#import + +static inline void activate_cocoa_multithreading() { + [[NSThread new] start]; +} +#pragma GCC visibility push(hidden) +*/ +import "C" + +func init() { + C.activate_cocoa_multithreading() +} diff --git a/app/internal/log/log_ios.go b/app/internal/log/log_ios.go index 11472e80..7de01076 100644 --- a/app/internal/log/log_ios.go +++ b/app/internal/log/log_ios.go @@ -16,6 +16,8 @@ import ( "io" "log" "unsafe" + + _ "gioui.org/app/internal/cocoainit" ) func init() { diff --git a/app/internal/window/os_macos.go b/app/internal/window/os_macos.go index 42c23fa8..9b4ee7d0 100644 --- a/app/internal/window/os_macos.go +++ b/app/internal/window/os_macos.go @@ -17,6 +17,8 @@ import ( "gioui.org/io/key" "gioui.org/io/pointer" "gioui.org/io/system" + + _ "gioui.org/app/internal/cocoainit" ) /*