mirror of
https://git.sr.ht/~eliasnaur/gio
synced 2026-07-01 23:55:39 +00:00
ui/app: rename Window.Redraw to Invalidate to match ui.InvalidateOp
Signed-off-by: Elias Naur <mail@eliasnaur.com>
This commit is contained in:
@@ -24,8 +24,8 @@ type Router struct {
|
||||
reader ui.OpsReader
|
||||
|
||||
// InvalidateOp summary.
|
||||
redraw bool
|
||||
redrawTime time.Time
|
||||
wakeup bool
|
||||
wakeupTime time.Time
|
||||
|
||||
// ProfileOp summary.
|
||||
profHandlers []input.Key
|
||||
@@ -42,7 +42,7 @@ func (q *Router) Events(k input.Key) []input.Event {
|
||||
|
||||
func (q *Router) Frame(ops *ui.Ops) {
|
||||
q.handlers.Clear()
|
||||
q.redraw = false
|
||||
q.wakeup = false
|
||||
q.profHandlers = q.profHandlers[:0]
|
||||
q.reader.Reset(ops)
|
||||
q.collect()
|
||||
@@ -71,9 +71,9 @@ func (q *Router) collect() {
|
||||
case ops.TypeInvalidate:
|
||||
var op ui.InvalidateOp
|
||||
op.Decode(encOp.Data)
|
||||
if !q.redraw || op.At.Before(q.redrawTime) {
|
||||
q.redraw = true
|
||||
q.redrawTime = op.At
|
||||
if !q.wakeup || op.At.Before(q.wakeupTime) {
|
||||
q.wakeup = true
|
||||
q.wakeupTime = op.At
|
||||
}
|
||||
case ops.TypeProfile:
|
||||
var op system.ProfileOp
|
||||
@@ -93,8 +93,8 @@ func (q *Router) Profiling() bool {
|
||||
return len(q.profHandlers) > 0
|
||||
}
|
||||
|
||||
func (q *Router) RedrawTime() (time.Time, bool) {
|
||||
return q.redrawTime, q.redraw
|
||||
func (q *Router) WakeupTime() (time.Time, bool) {
|
||||
return q.wakeupTime, q.wakeup
|
||||
}
|
||||
|
||||
func (h *handlerEvents) init() {
|
||||
|
||||
+17
-14
@@ -29,11 +29,11 @@ type Window struct {
|
||||
gpu *gpu.GPU
|
||||
inputState key.TextInputState
|
||||
|
||||
out chan Event
|
||||
in chan Event
|
||||
ack chan struct{}
|
||||
redraws chan struct{}
|
||||
frames chan *ui.Ops
|
||||
out chan Event
|
||||
in chan Event
|
||||
ack chan struct{}
|
||||
invalidates chan struct{}
|
||||
frames chan *ui.Ops
|
||||
|
||||
stage Stage
|
||||
animating bool
|
||||
@@ -81,11 +81,11 @@ func NewWindow(opts *WindowOptions) *Window {
|
||||
}
|
||||
|
||||
w := &Window{
|
||||
in: make(chan Event),
|
||||
out: make(chan Event),
|
||||
ack: make(chan struct{}),
|
||||
redraws: make(chan struct{}, 1),
|
||||
frames: make(chan *ui.Ops),
|
||||
in: make(chan Event),
|
||||
out: make(chan Event),
|
||||
ack: make(chan struct{}),
|
||||
invalidates: make(chan struct{}, 1),
|
||||
frames: make(chan *ui.Ops),
|
||||
}
|
||||
go w.run(opts)
|
||||
return w
|
||||
@@ -133,15 +133,18 @@ func (w *Window) draw(size image.Point, frame *ui.Ops) {
|
||||
w.router.AddProfile(system.ProfileEvent{Timings: timings})
|
||||
w.setNextFrame(time.Time{})
|
||||
}
|
||||
if t, ok := w.router.RedrawTime(); ok {
|
||||
if t, ok := w.router.WakeupTime(); ok {
|
||||
w.setNextFrame(t)
|
||||
}
|
||||
w.updateAnimation()
|
||||
}
|
||||
|
||||
func (w *Window) Redraw() {
|
||||
// Invalidate the current window such that a DrawEvent will be generated
|
||||
// immediately. If the window is not active, the redraw will trigger
|
||||
// when the window becomes active.
|
||||
func (w *Window) Invalidate() {
|
||||
select {
|
||||
case w.redraws <- struct{}{}:
|
||||
case w.invalidates <- struct{}{}:
|
||||
default:
|
||||
}
|
||||
}
|
||||
@@ -217,7 +220,7 @@ func (w *Window) run(opts *WindowOptions) {
|
||||
case <-timer:
|
||||
w.setNextFrame(time.Time{})
|
||||
w.updateAnimation()
|
||||
case <-w.redraws:
|
||||
case <-w.invalidates:
|
||||
w.setNextFrame(time.Time{})
|
||||
w.updateAnimation()
|
||||
case e := <-w.in:
|
||||
|
||||
Reference in New Issue
Block a user