From 98f80717e8941cf39bb4ac09ba343d56afe8d46e Mon Sep 17 00:00:00 2001 From: faiface Date: Tue, 7 May 2019 01:12:30 +0200 Subject: mux: fix not delivering resize correctly sometimes --- mux.go | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/mux.go b/mux.go index 1ee43bf..351ade2 100644 --- a/mux.go +++ b/mux.go @@ -8,6 +8,8 @@ import ( type Mux struct { mu sync.Mutex + haveR bool + r image.Rectangle eventsIns []chan<- Event draw chan<- func(draw.Image) image.Rectangle } @@ -26,6 +28,13 @@ func NewMux(env Env) (mux *Mux, master Env) { go func() { for e := range env.Events() { + var minX, minY, maxX, maxY int + if e.Matches("resize/%d/%d/%d/%d", &minX, &minY, &maxX, &maxY) { + mux.mu.Lock() + mux.r = image.Rect(minX, minY, maxX, maxY) + mux.haveR = true + mux.mu.Unlock() + } mux.mu.Lock() for _, eventsIn := range mux.eventsIns { eventsIn <- e @@ -61,6 +70,10 @@ func (mux *Mux) makeEnv(master bool) Env { mux.mu.Lock() mux.eventsIns = append(mux.eventsIns, eventsIn) + // make sure to always send a resize event to a new Env if we got it already + if mux.haveR { + eventsIn <- Eventf("resize/%d/%d/%d/%d", mux.r.Min.X, mux.r.Min.Y, mux.r.Max.X, mux.r.Max.Y) + } mux.mu.Unlock() go func() { -- cgit v1.2.3