File tree 1 file changed +12
-5
lines changed
1 file changed +12
-5
lines changed Original file line number Diff line number Diff line change @@ -108,11 +108,12 @@ type Window struct {
108
108
}
109
109
110
110
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
116
117
}
117
118
118
119
type callbacks struct {
@@ -219,6 +220,7 @@ func (w *Window) frame(frame *op.Ops, viewport image.Point) error {
219
220
}
220
221
221
222
func (w * Window ) processFrame (frame * op.Ops , ack chan <- struct {}) {
223
+ w .coalesced .framePending = false
222
224
wrapper := & w .decorations .Ops
223
225
off := op .Offset (w .lastFrame .off ).Push (wrapper )
224
226
ops .AddCall (& wrapper .Internal , & frame .Internal , ops.PC {}, ops .PCFor (& frame .Internal ))
@@ -563,6 +565,10 @@ func (w *Window) nextEvent() (event.Event, bool) {
563
565
s .wakeup = false
564
566
}()
565
567
switch {
568
+ case s .framePending :
569
+ // If the user didn't call FrameEvent.Event, process
570
+ // an empty frame.
571
+ w .processFrame (new (op.Ops ), nil )
566
572
case s .view != nil :
567
573
e := * s .view
568
574
s .view = nil
@@ -579,6 +585,7 @@ func (w *Window) nextEvent() (event.Event, bool) {
579
585
case s .frame != nil :
580
586
e := * s .frame
581
587
s .frame = nil
588
+ s .framePending = true
582
589
return e .FrameEvent , true
583
590
case s .wakeup :
584
591
return wakeupEvent {}, true
You can’t perform that action at this time.
0 commit comments