aboutsummaryrefslogtreecommitdiffstats
path: root/mux.go
diff options
context:
space:
mode:
authorfaiface <faiface2202@gmail.com>2019-05-02 02:41:59 +0200
committerfaiface <faiface2202@gmail.com>2019-05-02 02:41:59 +0200
commitc780bd677bb7712d88f8f047bb0cfb0fb08d1be8 (patch)
tree76845d343100e98a157d1daccb9345ec6155a544 /mux.go
parent7bbe7dc9618949f2fe023efcb896a70150966e44 (diff)
downloadgui-c780bd677bb7712d88f8f047bb0cfb0fb08d1be8.zip
make Env an interface (instead of a struct)
Diffstat (limited to 'mux.go')
-rw-r--r--mux.go16
1 files changed, 12 insertions, 4 deletions
diff --git a/mux.go b/mux.go
index cbe3488..7b051cb 100644
--- a/mux.go
+++ b/mux.go
@@ -19,13 +19,13 @@ func NewMux(env Env) (mux *Mux, master Env) {
go func() {
for d := range drawChan {
- env.Draw <- d
+ env.Draw() <- d
}
- close(env.Draw)
+ close(env.Draw())
}()
go func() {
- for e := range env.Events {
+ for e := range env.Events() {
mux.mu.Lock()
for _, eventsIn := range mux.eventsIns {
eventsIn <- e
@@ -46,10 +46,18 @@ func (mux *Mux) MakeEnv() Env {
return mux.makeEnv(false)
}
+type muxEnv struct {
+ events <-chan Event
+ draw chan<- func(draw.Image) image.Rectangle
+}
+
+func (m *muxEnv) Events() <-chan Event { return m.events }
+func (m *muxEnv) Draw() chan<- func(draw.Image) image.Rectangle { return m.draw }
+
func (mux *Mux) makeEnv(master bool) Env {
eventsOut, eventsIn := MakeEventsChan()
drawChan := make(chan func(draw.Image) image.Rectangle)
- env := Env{eventsOut, drawChan}
+ env := &muxEnv{eventsOut, drawChan}
mux.mu.Lock()
mux.eventsIns = append(mux.eventsIns, eventsIn)