diff options
| author | Pietro Gagliardi <[email protected]> | 2014-06-30 09:57:44 -0400 |
|---|---|---|
| committer | Pietro Gagliardi <[email protected]> | 2014-06-30 09:57:44 -0400 |
| commit | 33155f7496a818a1ed83fe49cccb63be7842bc81 (patch) | |
| tree | bbb14af3d92becf7d5ca5abfb28630a2b413ad93 /uitask_unix.go | |
| parent | e032807546a96e6489d18a0e42ced51b7c31a55c (diff) | |
Reverted everything back to the old API.
Diffstat (limited to 'uitask_unix.go')
| -rw-r--r-- | uitask_unix.go | 30 |
1 files changed, 12 insertions, 18 deletions
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 } |
