From 0422e505333513beef8172cc79f2ec208293fc14 Mon Sep 17 00:00:00 2001 From: Sam Anthony Date: Sat, 24 Aug 2024 17:13:44 -0400 Subject: move functionality of makeEventsChan() to external library --- mux.go | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) (limited to 'mux.go') diff --git a/mux.go b/mux.go index 5c6afe9..486fe8f 100644 --- a/mux.go +++ b/mux.go @@ -66,7 +66,7 @@ func NewMux(parent Env) Mux { size.Set <- resize.Rectangle } for _, child := range children { - child.eventsIn <- e + child.events.Enqueue <- e } case child := <-addChild: children = append(children, child) @@ -108,8 +108,7 @@ func (mux Mux) detach() <-chan bool { } type muxEnv struct { - eventsIn chan<- Event - eventsOut <-chan Event + events share.Queue[Event] draw chan<- func(draw.Image) image.Rectangle attachChan chan<- attachable kill chan<- bool @@ -118,7 +117,7 @@ type muxEnv struct { } func (mux Mux) MakeEnv() Env { - eventsOut, eventsIn := makeEventsChan() + events := share.NewQueue[Event]() drawChan := make(chan func(draw.Image) image.Rectangle) attached := newAttachHandler() kill := make(chan bool) @@ -126,8 +125,7 @@ func (mux Mux) MakeEnv() Env { detachFromMux := make(chan bool) env := muxEnv{ - eventsIn: eventsIn, - eventsOut: eventsOut, + events: events, draw: drawChan, attachChan: attached.attach(), kill: kill, @@ -136,7 +134,7 @@ func (mux Mux) MakeEnv() Env { } mux.addChild <- env // make sure to always send a resize event to a new Env - eventsIn <- Resize{mux.size.Get()} + events.Enqueue <- Resize{mux.size.Get()} go func() { defer func() { @@ -145,8 +143,7 @@ func (mux Mux) MakeEnv() Env { }() defer close(kill) defer close(drawChan) - defer close(eventsIn) - // eventsOut closed automatically by makeEventsChan() + defer close(events.Enqueue) defer func() { mux.removeChild <- env @@ -174,7 +171,7 @@ func (mux Mux) MakeEnv() Env { } func (env muxEnv) Events() <-chan Event { - return env.eventsOut + return env.events.Dequeue } func (env muxEnv) Draw() chan<- func(draw.Image) image.Rectangle { -- cgit v1.2.3