mirror of
https://git.sr.ht/~eliasnaur/gio
synced 2026-07-06 09:55:40 +00:00
app: don't process Window state updates before client is ready for events
On Android, a call to update soft keyboard state may result in focus events. Before this change, the client would still be blocked in FrameEvent.Frame, resulting in a deadlock. Signed-off-by: Elias Naur <mail@eliasnaur.com>
This commit is contained in:
+3
-3
@@ -202,7 +202,7 @@ func (w *Window) validateAndProcess(d driver, frameStart time.Time, size image.P
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
w.processFrame(d, frameStart, frame)
|
w.queue.q.Frame(frame)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -229,8 +229,7 @@ func (w *Window) render(frame *op.Ops, viewport image.Point) error {
|
|||||||
return w.ctx.Present()
|
return w.ctx.Present()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (w *Window) processFrame(d driver, frameStart time.Time, frame *op.Ops) {
|
func (w *Window) processFrame(d driver, frameStart time.Time) {
|
||||||
w.queue.q.Frame(frame)
|
|
||||||
for k := range w.semantic.ids {
|
for k := range w.semantic.ids {
|
||||||
delete(w.semantic.ids, k)
|
delete(w.semantic.ids, k)
|
||||||
}
|
}
|
||||||
@@ -612,6 +611,7 @@ func (w *Window) processEvent(d driver, e event.Event) {
|
|||||||
close(w.out)
|
close(w.out)
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
w.processFrame(d, frameStart)
|
||||||
w.updateCursor()
|
w.updateCursor()
|
||||||
case *system.CommandEvent:
|
case *system.CommandEvent:
|
||||||
w.out <- e
|
w.out <- e
|
||||||
|
|||||||
Reference in New Issue
Block a user