File tree Expand file tree Collapse file tree 1 file changed +12
-5
lines changed Expand file tree Collapse file tree 1 file changed +12
-5
lines changed Original file line number Diff line number Diff line change @@ -108,11 +108,12 @@ type Window struct {
108108}
109109
110110type 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
118119type callbacks struct {
@@ -219,6 +220,7 @@ func (w *Window) frame(frame *op.Ops, viewport image.Point) error {
219220}
220221
221222func (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
You can’t perform that action at this time.
0 commit comments