Skip to content

Commit

Permalink
Don't push mobile devices too hard, was causing iOS renderer to freeze
Browse files Browse the repository at this point in the history
Fixes #584
  • Loading branch information
andydotxyz committed Dec 24, 2019
1 parent 79d7068 commit 92bbe56
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 30 deletions.
22 changes: 11 additions & 11 deletions internal/driver/gomobile/driver.go
Original file line number Diff line number Diff line change
Expand Up @@ -136,9 +136,12 @@ func (d *mobileDriver) Run() {
canvas.painter.Init() // we cannot init until the context is set above
}

d.freeDirtyTextures(canvas)
d.paintWindow(current, currentSize)
a.Publish()
if d.freeDirtyTextures(canvas) {
d.paintWindow(current, currentSize)
a.Publish()
}

time.Sleep(time.Millisecond * 10)
a.Send(paint.Event{})
case touch.Event:
switch e.Type {
Expand All @@ -165,9 +168,6 @@ func (d *mobileDriver) Run() {
}

func (d *mobileDriver) onStart() {
for _, win := range d.AllWindows() {
win.Canvas().(*mobileCanvas).painter.Init() // we cannot init until the context is set above
}
}

func (d *mobileDriver) onStop() {
Expand Down Expand Up @@ -422,17 +422,19 @@ func (d *mobileDriver) typeUpCanvas(canvas *mobileCanvas, r rune, code key.Code)

}

func (d *mobileDriver) freeDirtyTextures(canvas *mobileCanvas) {
func (d *mobileDriver) freeDirtyTextures(canvas *mobileCanvas) bool {
freed := false
for {
select {
case object := <-canvas.refreshQueue:
freed = true
freeWalked := func(obj fyne.CanvasObject, _ fyne.Position, _ fyne.Position, _ fyne.Size) bool {
canvas.painter.Free(obj)
return false
}
driver.WalkCompleteObjectTree(object, freeWalked, nil)
default:
return
return freed
}
}
}
Expand All @@ -448,7 +450,5 @@ func (d *mobileDriver) Device() fyne.Device {
// NewGoMobileDriver sets up a new Driver instance implemented using the Go
// Mobile extension and OpenGL bindings.
func NewGoMobileDriver() fyne.Driver {
driver := new(mobileDriver)

return driver
return new(mobileDriver)
}
4 changes: 4 additions & 0 deletions internal/painter/gl/gl_gomobile.go
Original file line number Diff line number Diff line change
Expand Up @@ -179,6 +179,10 @@ func (p *glPainter) glCreateBuffer(points []float32) Buffer {
return Buffer(sharedBuffer)
}

func (p *glPainter) glFreeBuffer(_ Buffer) {
// we don't free a shared buffer!
}

func (p *glPainter) glDrawTexture(texture Texture, alpha float32) {
ctx := p.glctx()
ctx.Enable(gl.BLEND)
Expand Down
12 changes: 0 additions & 12 deletions internal/painter/gl/gl_gomobile_ios.go

This file was deleted.

7 changes: 0 additions & 7 deletions internal/painter/gl/gl_gomobile_other.go

This file was deleted.

0 comments on commit 92bbe56

Please # to comment.