Buffer is now reallocated on window size change

This commit is contained in:
Sasha Koshka 2022-11-11 22:46:07 -05:00
parent 05c448f058
commit c865f7146a

View File

@ -150,14 +150,13 @@ func (backend *Backend) handleXEvent (event xgb.Event) {
backend.metrics.windowHeight = newHeight
if sizeChanged {
// compress events
configureEvent =
backend.compressConfigureNotify(configureEvent)
// resize and rebind canvas
// TODO: remove draw functions from reallocate canvas,
// and only reallocate when drawing and the window
// dimensions have changed
backend.reallocateCanvas()
// notify application of resize
backend.application.SetSize(backend.calculateBufferSize())
backend.channel <- stone.EventResize { }
}
}
@ -204,6 +203,16 @@ func (backend *Backend) calculateWindowSize () (x, y int) {
return
}
func (backend *Backend) calculateBufferSize () (width, height int) {
width =
(backend.metrics.windowWidth - backend.metrics.padding * 2) /
backend.metrics.cellWidth
height =
(backend.metrics.windowHeight - backend.metrics.padding * 2) /
backend.metrics.cellHeight
return
}
func (backend *Backend) reallocateCanvas () {
backend.drawLock.Lock()
defer backend.drawLock.Unlock()