mirror of
https://github.com/hajimehoshi/ebiten.git
synced 2024-12-24 02:38:53 +01:00
input: Bug fix: runeBuffer should be reset on each frame
This commit is contained in:
parent
4b83a060fe
commit
cea9bd5a19
@ -97,7 +97,7 @@ func drawWithFittingScale(dst *Image, src *Image) {
|
||||
_ = dst.DrawImage(src, op)
|
||||
}
|
||||
|
||||
func (c *graphicsContext) Update(updateCount int) error {
|
||||
func (c *graphicsContext) Update(updateCount int, afterFrameUpdate func()) error {
|
||||
if err := c.initializeIfNeeded(); err != nil {
|
||||
return err
|
||||
}
|
||||
@ -107,6 +107,7 @@ func (c *graphicsContext) Update(updateCount int) error {
|
||||
if err := c.f(c.offscreen); err != nil {
|
||||
return err
|
||||
}
|
||||
afterFrameUpdate()
|
||||
}
|
||||
if 0 < updateCount {
|
||||
drawWithFittingScale(c.offscreen2, c.offscreen)
|
||||
|
@ -16,7 +16,7 @@ package ui
|
||||
|
||||
type GraphicsContext interface {
|
||||
SetSize(width, height int, scale float64)
|
||||
Update() error
|
||||
Update(afterFrameUpdate func()) error
|
||||
Invalidate()
|
||||
}
|
||||
|
||||
|
@ -476,10 +476,11 @@ func (u *userInterface) update(g GraphicsContext) error {
|
||||
}
|
||||
return nil
|
||||
})
|
||||
if err := g.Update(); err != nil {
|
||||
if err := g.Update(func() {
|
||||
currentInput.runeBuffer = currentInput.runeBuffer[:0]
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
currentInput.runeBuffer = currentInput.runeBuffer[:0]
|
||||
return nil
|
||||
}
|
||||
|
||||
|
@ -136,10 +136,11 @@ func (u *userInterface) update(g GraphicsContext) error {
|
||||
g.SetSize(u.width, u.height, u.actualScreenScale())
|
||||
return nil
|
||||
}
|
||||
if err := g.Update(); err != nil {
|
||||
if err := g.Update(func() {
|
||||
currentInput.runeBuffer = nil
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
currentInput.runeBuffer = nil
|
||||
return nil
|
||||
}
|
||||
|
||||
|
@ -87,7 +87,7 @@ func (u *userInterface) update(g GraphicsContext) error {
|
||||
g.SetSize(u.width, u.height, u.actualScreenScale())
|
||||
return nil
|
||||
}
|
||||
if err := g.Update(); err != nil {
|
||||
if err := g.Update(func() {}); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
|
4
run.go
4
run.go
@ -78,9 +78,9 @@ func (u *updater) SetSize(width, height int, scale float64) {
|
||||
u.g.SetSize(width, height, scale)
|
||||
}
|
||||
|
||||
func (u *updater) Update() error {
|
||||
func (u *updater) Update(afterFrameUpdate func()) error {
|
||||
n := clock.Update()
|
||||
if err := u.g.Update(n); err != nil {
|
||||
if err := u.g.Update(n, afterFrameUpdate); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
|
Loading…
Reference in New Issue
Block a user