diff --git a/backends/x/draw.go b/backends/x/draw.go index 30bc680..8200f06 100644 --- a/backends/x/draw.go +++ b/backends/x/draw.go @@ -11,21 +11,16 @@ func (backend *Backend) Draw () { backend.lock.Lock() defer backend.lock.Unlock() - boundsChanged := - backend.memory.windowWidth != backend.metrics.windowWidth || - backend.memory.windowHeight != backend.metrics.windowHeight - backend.memory.windowWidth = backend.metrics.windowWidth - backend.memory.windowHeight = backend.metrics.windowHeight - - if boundsChanged { + if backend.windowBoundsClean { + backend.canvas.XPaintRects ( + backend.window.Id, + backend.drawCells(false)...) + } else { backend.reallocateCanvas() backend.drawCells(true) backend.canvas.XDraw() backend.canvas.XPaint(backend.window.Id) - } else { - backend.canvas.XPaintRects ( - backend.window.Id, - backend.drawCells(false)...) + backend.windowBoundsClean = true } } diff --git a/backends/x/event.go b/backends/x/event.go index d170a43..c2ac74d 100644 --- a/backends/x/event.go +++ b/backends/x/event.go @@ -46,6 +46,8 @@ func (backend *Backend) handleConfigureNotify ( (backend.metrics.windowWidth - frameWidth) / 2 backend.metrics.paddingY = (backend.metrics.windowHeight - frameHeight) / 2 + + backend.windowBoundsClean = false } backend.lock.Unlock() diff --git a/backends/x/x.go b/backends/x/x.go index d767fae..74a7818 100644 --- a/backends/x/x.go +++ b/backends/x/x.go @@ -43,10 +43,7 @@ type Backend struct { descent int } - memory struct { - windowWidth int - windowHeight int - } + windowBoundsClean bool } func (backend *Backend) SetTitle (title string) (err error) {