aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--layout/interface.go28
-rw-r--r--win/win.go13
2 files changed, 15 insertions, 26 deletions
diff --git a/layout/interface.go b/layout/interface.go
index 1dcf34a..d203c3f 100644
--- a/layout/interface.go
+++ b/layout/interface.go
@@ -8,33 +8,23 @@ import (
type EventDrawer interface {
Event() <-chan EventConsume
- Draw() chan<- ImageFlush
+ Draw(func(draw.Image) image.Rectangle)
}
type EventConsume struct {
- Event string
+ Event
Consume chan<- bool
}
-func SendEvent(ch chan<- EventConsume, format string, a ...interface{}) (consume <-chan bool) {
- cons := make(chan bool)
- ch <- EventConsume{fmt.Sprintf(format, a...), cons}
- return cons
-}
+type Event string
-func (ec EventConsume) Matches(format string, a ...interface{}) bool {
- _, err := fmt.Sscanf(ec.Event, format, a...)
+func (e Event) Matches(format string, a ...interface{}) bool {
+ _, err := fmt.Sscanf(string(e), format, a...)
return err == nil
}
-type ImageFlush struct {
- Image chan<- draw.Image
- Flush <-chan image.Rectangle
-}
-
-func SendDraw(ch chan<- ImageFlush) (img <-chan draw.Image, flush chan<- image.Rectangle) {
- imgC := make(chan draw.Image)
- flushC := make(chan image.Rectangle)
- ch <- ImageFlush{imgC, flushC}
- return imgC, flushC
+func SendEvent(ch chan<- EventConsume, format string, a ...interface{}) (consume <-chan bool) {
+ cons := make(chan bool)
+ ch <- EventConsume{Event(fmt.Sprintf(format, a...)), cons}
+ return cons
}
diff --git a/win/win.go b/win/win.go
index ccecc94..3bb408f 100644
--- a/win/win.go
+++ b/win/win.go
@@ -52,7 +52,7 @@ func New(opts ...Option) (*Win, error) {
w := &Win{
event: make(chan layout.EventConsume),
- draw: make(chan layout.ImageFlush),
+ draw: make(chan func(draw.Image) image.Rectangle),
newSize: make(chan image.Rectangle),
finish: make(chan struct{}),
}
@@ -98,7 +98,7 @@ func makeGLFWWin(o *options) (*glfw.Window, error) {
type Win struct {
event chan layout.EventConsume
- draw chan layout.ImageFlush
+ draw chan func(draw.Image) image.Rectangle
newSize chan image.Rectangle
finish chan struct{}
@@ -120,8 +120,8 @@ func (w *Win) Event() <-chan layout.EventConsume {
return w.event
}
-func (w *Win) Draw() chan<- layout.ImageFlush {
- return w.draw
+func (w *Win) Draw(d func(draw.Image) image.Rectangle) {
+ w.draw <- d
}
func (w *Win) eventThread() {
@@ -190,9 +190,8 @@ func (w *Win) openGLThread() {
w.img = img
openGLFlushR = r
- case imfl := <-w.draw:
- imfl.Image <- w.img
- r := <-imfl.Flush
+ case d := <-w.draw:
+ r := d(w.img)
openGLFlushR = openGLFlushR.Union(r)
case <-openGLFlush.C: