From 9df56f44e92f2986699f82f6f75dec8aa4d7f47d Mon Sep 17 00:00:00 2001 From: Elias Naur Date: Tue, 22 Jun 2021 19:35:00 +0200 Subject: [PATCH] app: avoid deadlock on context refresh The platform GPU context must be Refreshed on the window event thread, but our rendering loop must not, because it may also want access to the window event thread. Fixes gio#236 Signed-off-by: Elias Naur --- app/loop.go | 1 - app/window.go | 3 ++- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/loop.go b/app/loop.go index 16e2762e..6881dee6 100644 --- a/app/loop.go +++ b/app/loop.go @@ -134,7 +134,6 @@ func (l *renderLoop) Summary() string { } func (l *renderLoop) Refresh() { - l.ctx.Refresh() if l.err != nil { return } diff --git a/app/window.go b/app/window.go index 2804396f..4305316f 100644 --- a/app/window.go +++ b/app/window.go @@ -416,8 +416,9 @@ func (w *Window) destroy(err error) { func (w *Window) refresh() { w.driverRun(func(_ wm.Driver) { - w.loop.Refresh() + w.ctx.Refresh() }) + w.loop.Refresh() } func (w *Window) destroyGPU() {