From aa158e0c9c205c96cc123c83a0c4e41adb653893 Mon Sep 17 00:00:00 2001 From: Elias Naur Date: Fri, 25 Oct 2024 20:38:37 +0200 Subject: [PATCH] app: fix race condition between Window.Invalidate and event loop References: https://todo.sr.ht/~eliasnaur/gio/603 Signed-off-by: Elias Naur --- app/window.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/window.go b/app/window.go index 8fc0ca11..bebd7e18 100644 --- a/app/window.go +++ b/app/window.go @@ -394,6 +394,8 @@ func (c *callbacks) SetDriver(d driver) { if d == nil { panic("nil driver") } + c.w.invMu.Lock() + defer c.w.invMu.Unlock() c.w.driver = d } @@ -647,8 +649,8 @@ func (w *Window) processEvent(e event.Event) bool { w.destroyGPU() w.invMu.Lock() w.mayInvalidate = false - w.invMu.Unlock() w.driver = nil + w.invMu.Unlock() if q := w.timer.quit; q != nil { q <- struct{}{} <-q