internal/ui: refactoring: remove sizeChanged

It is safe to call Layout every frame.
This commit is contained in:
Hajime Hoshi 2022-02-14 02:17:45 +09:00
parent fcd4453e4f
commit e2f0878a4c

View File

@ -58,7 +58,6 @@ var (
// Give a default outside size so that the game can start without initializing them. // Give a default outside size so that the game can start without initializing them.
outsideWidth: 640, outsideWidth: 640,
outsideHeight: 480, outsideHeight: 480,
sizeChanged: true,
} }
) )
@ -99,9 +98,8 @@ type UserInterface struct {
outsideWidth float64 outsideWidth float64
outsideHeight float64 outsideHeight float64
sizeChanged bool foreground int32
foreground int32 errCh chan error
errCh chan error
// Used for gomobile-build // Used for gomobile-build
gbuildWidthPx int gbuildWidthPx int
@ -273,10 +271,6 @@ func (u *UserInterface) run(game Game, mainloop bool) (err error) {
} }
}() }()
u.m.Lock()
u.sizeChanged = true
u.m.Unlock()
u.context = newContextImpl(game) u.context = newContextImpl(game)
if mainloop { if mainloop {
@ -306,24 +300,18 @@ func (u *UserInterface) layoutIfNeeded() {
var outsideWidth, outsideHeight float64 var outsideWidth, outsideHeight float64
u.m.RLock() u.m.RLock()
sizeChanged := u.sizeChanged if u.gbuildWidthPx == 0 || u.gbuildHeightPx == 0 {
if sizeChanged { outsideWidth = u.outsideWidth
if u.gbuildWidthPx == 0 || u.gbuildHeightPx == 0 { outsideHeight = u.outsideHeight
outsideWidth = u.outsideWidth } else {
outsideHeight = u.outsideHeight // gomobile build
} else { d := deviceScale()
// gomobile build outsideWidth = float64(u.gbuildWidthPx) / d
d := deviceScale() outsideHeight = float64(u.gbuildHeightPx) / d
outsideWidth = float64(u.gbuildWidthPx) / d
outsideHeight = float64(u.gbuildHeightPx) / d
}
} }
u.sizeChanged = false
u.m.RUnlock() u.m.RUnlock()
if sizeChanged { u.context.layout(outsideWidth, outsideHeight)
u.context.layout(outsideWidth, outsideHeight)
}
} }
func (u *UserInterface) update() error { func (u *UserInterface) update() error {
@ -353,7 +341,6 @@ func (u *UserInterface) SetOutsideSize(outsideWidth, outsideHeight float64) {
if u.outsideWidth != outsideWidth || u.outsideHeight != outsideHeight { if u.outsideWidth != outsideWidth || u.outsideHeight != outsideHeight {
u.outsideWidth = outsideWidth u.outsideWidth = outsideWidth
u.outsideHeight = outsideHeight u.outsideHeight = outsideHeight
u.sizeChanged = true
} }
u.m.Unlock() u.m.Unlock()
} }
@ -362,7 +349,6 @@ func (u *UserInterface) setGBuildSize(widthPx, heightPx int) {
u.m.Lock() u.m.Lock()
u.gbuildWidthPx = widthPx u.gbuildWidthPx = widthPx
u.gbuildHeightPx = heightPx u.gbuildHeightPx = heightPx
u.sizeChanged = true
u.m.Unlock() u.m.Unlock()
u.once.Do(func() { u.once.Do(func() {