Skip to content

Commit 3d36537

Browse files
committed
app: use empty frame when FrameEvent.Frame isn't called
Signed-off-by: Elias Naur <[email protected]>
1 parent 4e2d418 commit 3d36537

File tree

1 file changed

+12
-5
lines changed

1 file changed

+12
-5
lines changed

app/window.go

+12-5
Original file line numberDiff line numberDiff line change
@@ -108,11 +108,12 @@ type Window struct {
108108
}
109109

110110
type eventSummary struct {
111-
wakeup bool
112-
cfg *ConfigEvent
113-
view *ViewEvent
114-
frame *frameEvent
115-
destroy *DestroyEvent
111+
wakeup bool
112+
cfg *ConfigEvent
113+
view *ViewEvent
114+
frame *frameEvent
115+
framePending bool
116+
destroy *DestroyEvent
116117
}
117118

118119
type callbacks struct {
@@ -219,6 +220,7 @@ func (w *Window) frame(frame *op.Ops, viewport image.Point) error {
219220
}
220221

221222
func (w *Window) processFrame(frame *op.Ops, ack chan<- struct{}) {
223+
w.coalesced.framePending = false
222224
wrapper := &w.decorations.Ops
223225
off := op.Offset(w.lastFrame.off).Push(wrapper)
224226
ops.AddCall(&wrapper.Internal, &frame.Internal, ops.PC{}, ops.PCFor(&frame.Internal))
@@ -567,6 +569,10 @@ func (w *Window) nextEvent() (event.Event, bool) {
567569
w.mayInvalidate = (w.mayInvalidate || mayInvalidate) && w.driver != nil
568570
}()
569571
switch {
572+
case s.framePending:
573+
// If the user didn't call FrameEvent.Event, process
574+
// an empty frame.
575+
w.processFrame(new(op.Ops), nil)
570576
case s.view != nil:
571577
e := *s.view
572578
s.view = nil
@@ -583,6 +589,7 @@ func (w *Window) nextEvent() (event.Event, bool) {
583589
case s.frame != nil:
584590
e := *s.frame
585591
s.frame = nil
592+
s.framePending = true
586593
return e.FrameEvent, true
587594
case s.wakeup:
588595
return wakeupEvent{}, true

0 commit comments

Comments
 (0)