From 91bd7417f8e450fe24677b01cd4f73d8d977bf10 Mon Sep 17 00:00:00 2001 From: Andy Williams Date: Mon, 20 Jul 2020 15:19:59 +0100 Subject: [PATCH] Fix issue where some threading models could get stuck Internal content expanding triggered this on Windows Fixes #1189 --- internal/driver/glfw/window.go | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/internal/driver/glfw/window.go b/internal/driver/glfw/window.go index b16b4ef631..066c2a5b67 100644 --- a/internal/driver/glfw/window.go +++ b/internal/driver/glfw/window.go @@ -264,8 +264,9 @@ func (w *window) fitContent() { } minWidth, minHeight := w.minSizeOnScreen() - w.viewLock.Lock() - defer w.viewLock.Unlock() + w.viewLock.RLock() + view := w.viewport + w.viewLock.RUnlock() if w.width < minWidth || w.height < minHeight { if w.width < minWidth { w.width = minWidth @@ -273,15 +274,17 @@ func (w *window) fitContent() { if w.height < minHeight { w.height = minHeight } + w.viewLock.Lock() w.shouldExpand = true // queue the resize to happen on main + w.viewLock.Unlock() } if w.fixedSize { w.width = internal.ScaleInt(w.canvas, w.Canvas().Size().Width) w.height = internal.ScaleInt(w.canvas, w.Canvas().Size().Height) - w.viewport.SetSizeLimits(w.width, w.height, w.width, w.height) + view.SetSizeLimits(w.width, w.height, w.width, w.height) } else { - w.viewport.SetSizeLimits(minWidth, minHeight, glfw.DontCare, glfw.DontCare) + view.SetSizeLimits(minWidth, minHeight, glfw.DontCare, glfw.DontCare) } }