summaryrefslogtreecommitdiff
path: root/redo/uitask_unix.go
diff options
context:
space:
mode:
Diffstat (limited to 'redo/uitask_unix.go')
-rw-r--r--redo/uitask_unix.go34
1 files changed, 34 insertions, 0 deletions
diff --git a/redo/uitask_unix.go b/redo/uitask_unix.go
new file mode 100644
index 0000000..211349b
--- /dev/null
+++ b/redo/uitask_unix.go
@@ -0,0 +1,34 @@
+// 7 july 2014
+
+package ui
+
+import (
+ "unsafe"
+)
+
+// #cgo pkg-config: gtk+-3.0
+// #include "gtk_unix.h"
+// extern gboolean doissue(gpointer data);
+import "C"
+
+func uiinit() error {
+ // TODO replace with the eerror-checking version
+ C.gtk_init()
+ return nil
+}
+
+func uimsgloop() {
+ C.gtk_main()
+}
+
+func issue(req *Request) {
+ C.gdk_threads_add_idle(C.GSourceFunc(C.doissue), C.gpointer(unsafe.Pointer(req)))
+}
+
+//export doissue
+func doissue(data C.gpointer) C.gboolean {
+ req := (*Request)(unsafe.Pointer(data))
+ req.op()
+ close(req.done)
+ return C.FALSE // don't repeat
+}