mirror of
https://git.sr.ht/~eliasnaur/gio
synced 2026-07-02 16:06:19 +00:00
10a81bf217
Signed-off-by: Elias Naur <mail@eliasnaur.com>
31 lines
476 B
Go
31 lines
476 B
Go
// SPDX-License-Identifier: Unlicense OR MIT
|
|
|
|
package window
|
|
|
|
/*
|
|
__attribute__ ((visibility ("hidden"))) void gio_wakeupMainThread(void);
|
|
*/
|
|
import "C"
|
|
|
|
var mainFuncs = make(chan func(), 1)
|
|
|
|
// runOnMain runs the function on the main thread.
|
|
func runOnMain(f func()) {
|
|
go func() {
|
|
mainFuncs <- f
|
|
C.gio_wakeupMainThread()
|
|
}()
|
|
}
|
|
|
|
//export gio_dispatchMainFuncs
|
|
func gio_dispatchMainFuncs() {
|
|
for {
|
|
select {
|
|
case f := <-mainFuncs:
|
|
f()
|
|
default:
|
|
return
|
|
}
|
|
}
|
|
}
|