From 3e601e73c421929ce9e82a22786998d9fd8322f2 Mon Sep 17 00:00:00 2001 From: Walter Werner SCHNEIDER Date: Tue, 8 Jul 2025 18:42:23 +0300 Subject: [PATCH] app: optimize window context locking Avoids unnecessary eglMakeCurrent and thread locking calls to enhance performance. Fixes: https://todo.sr.ht/~eliasnaur/gio/658 Signed-off-by: Walter Werner SCHNEIDER --- app/window.go | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/app/window.go b/app/window.go index 3953600d..54f56b76 100644 --- a/app/window.go +++ b/app/window.go @@ -142,8 +142,11 @@ func (w *Window) validateAndProcess(size image.Point, sync bool, frame *op.Ops, if w.gpu == nil && !w.nocontext { var err error if w.ctx == nil { - w.ctx, err = w.driver.NewContext() - if err != nil { + if w.ctx, err = w.driver.NewContext(); err != nil { + return err + } + if err = w.ctx.Lock(); err != nil { + w.destroyGPU() return err } sync = true @@ -163,12 +166,6 @@ func (w *Window) validateAndProcess(size image.Point, sync bool, frame *op.Ops, return err } } - if w.ctx != nil { - if err := w.ctx.Lock(); err != nil { - w.destroyGPU() - return err - } - } if w.gpu == nil && !w.nocontext { gpu, err := gpu.New(w.ctx.API()) if err != nil { @@ -200,7 +197,6 @@ func (w *Window) validateAndProcess(size image.Point, sync bool, frame *op.Ops, var err error if w.gpu != nil { err = w.ctx.Present() - w.ctx.Unlock() } return err }