mirror of
https://git.sr.ht/~eliasnaur/gio
synced 2026-07-01 07:35: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
|
||||
}
|
||||
}
|
||||
w.processFrame(d, frameStart, frame)
|
||||
w.queue.q.Frame(frame)
|
||||
return nil
|
||||
}
|
||||
}
|
||||
@@ -229,8 +229,7 @@ func (w *Window) render(frame *op.Ops, viewport image.Point) error {
|
||||
return w.ctx.Present()
|
||||
}
|
||||
|
||||
func (w *Window) processFrame(d driver, frameStart time.Time, frame *op.Ops) {
|
||||
w.queue.q.Frame(frame)
|
||||
func (w *Window) processFrame(d driver, frameStart time.Time) {
|
||||
for k := range w.semantic.ids {
|
||||
delete(w.semantic.ids, k)
|
||||
}
|
||||
@@ -612,6 +611,7 @@ func (w *Window) processEvent(d driver, e event.Event) {
|
||||
close(w.out)
|
||||
break
|
||||
}
|
||||
w.processFrame(d, frameStart)
|
||||
w.updateCursor()
|
||||
case *system.CommandEvent:
|
||||
w.out <- e
|
||||
|
||||
Reference in New Issue
Block a user