From 33155f7496a818a1ed83fe49cccb63be7842bc81 Mon Sep 17 00:00:00 2001 From: Pietro Gagliardi Date: Mon, 30 Jun 2014 09:57:44 -0400 Subject: Reverted everything back to the old API. --- uitask_unix.go | 30 ++++++++++++------------------ 1 file changed, 12 insertions(+), 18 deletions(-) (limited to 'uitask_unix.go') diff --git a/uitask_unix.go b/uitask_unix.go index a8cabd2..030f096 100644 --- a/uitask_unix.go +++ b/uitask_unix.go @@ -6,6 +6,7 @@ package ui import ( "fmt" + "runtime" ) // #cgo pkg-config: gtk+-3.0 @@ -14,32 +15,19 @@ import "C" var uitask chan func() -func uiinit() error { +func ui(main func()) error { + runtime.LockOSThread() + + uitask = make(chan func()) err := gtk_init() if err != nil { return fmt.Errorf("gtk_init() failed: %v", err) } - // do this only on success, just to be safe - uitask = make(chan func()) - return nil -} - -func ui() { // thanks to tristan and Daniel_S in irc.gimp.net/#gtk // see our_idle_callback in callbacks_unix.go for details go func() { - for { - var f func() - - select { - case f = <-uitask: - // do nothing - case <-Stop: - f = func() { - C.gtk_main_quit() - } - } + for f := range uitask { done := make(chan struct{}) gdk_threads_add_idle(>kIdleOp{ what: f, @@ -50,5 +38,11 @@ func ui() { } }() + go func() { + main() + uitask <- gtk_main_quit + }() + C.gtk_main() + return nil } -- cgit v1.2.3