5
0
mirror of https://github.com/wailsapp/wails.git synced 2025-05-02 15:30:37 +08:00
wails/v3/pkg/application/mainthread_darwin.go
2023-02-04 11:27:27 +11:00

38 lines
811 B
Go

//go:build darwin
package application
/*
#cgo CFLAGS: -mmacosx-version-min=10.13 -x objective-c
#cgo LDFLAGS: -framework Cocoa
#include "Cocoa/Cocoa.h"
extern void dispatchOnMainThreadCallback(unsigned int);
static void dispatchOnMainThread(unsigned int id) {
dispatch_async(dispatch_get_main_queue(), ^{
dispatchOnMainThreadCallback(id);
});
}
*/
import "C"
func (m *macosApp) dispatchOnMainThread(id uint) {
C.dispatchOnMainThread(C.uint(id))
}
//export dispatchOnMainThreadCallback
func dispatchOnMainThreadCallback(callbackID C.uint) {
mainThreadFunctionStoreLock.RLock()
id := uint(callbackID)
fn := mainThreadFunctionStore[id]
if fn == nil {
Fatal("dispatchCallback called with invalid id: %v", id)
}
delete(mainThreadFunctionStore, id)
mainThreadFunctionStoreLock.RUnlock()
fn()
}