io/input: remove pointerQueue.scratch optimization

We're about the refactor this quite subtle code, and the optimization
doesn't seem to carry its weight in complexity.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
This commit is contained in:
Elias Naur
2023-11-15 16:38:53 -06:00
parent d25912678c
commit 3ba5fc557c
+8 -16
View File
@@ -24,8 +24,6 @@ type pointerQueue struct {
pointers []pointerInfo pointers []pointerInfo
transfers []io.ReadCloser // pending data transfers transfers []io.ReadCloser // pending data transfers
scratch []event.Tag
semantic struct { semantic struct {
idsAssigned bool idsAssigned bool
lastID SemanticID lastID SemanticID
@@ -271,18 +269,13 @@ func (q *pointerQueue) grab(req pointer.GrabCmd, events *handlerEvents) {
if !p.pressed || p.id != req.ID { if !p.pressed || p.id != req.ID {
continue continue
} }
for i, k2 := range p.handlers { // Drop other handlers that lost their grab.
if k2 == req.Tag { for i := len(p.handlers) - 1; i >= 0; i-- {
// Drop other handlers that lost their grab. if tag := p.handlers[i]; tag != req.Tag {
dropped := q.scratch[:0] q.dropHandler(events, tag)
dropped = append(dropped, p.handlers[:i]...)
dropped = append(dropped, p.handlers[i+1:]...)
for _, tag := range dropped {
q.dropHandler(events, tag)
}
return
} }
} }
break
} }
} }
@@ -538,7 +531,7 @@ func (q *pointerQueue) hitTest(pos f32.Point, onNode func(*hitNode) bool) pointe
} }
func (q *pointerQueue) opHit(pos f32.Point) ([]event.Tag, pointer.Cursor) { func (q *pointerQueue) opHit(pos f32.Point) ([]event.Tag, pointer.Cursor) {
hits := q.scratch[:0] var hits []event.Tag
cursor := q.hitTest(pos, func(n *hitNode) bool { cursor := q.hitTest(pos, func(n *hitNode) bool {
if n.tag != nil { if n.tag != nil {
if _, exists := q.handlers[n.tag]; exists { if _, exists := q.handlers[n.tag]; exists {
@@ -547,7 +540,6 @@ func (q *pointerQueue) opHit(pos f32.Point) ([]event.Tag, pointer.Cursor) {
} }
return true return true
}) })
q.scratch = hits[:0]
return hits, cursor return hits, cursor
} }
@@ -810,7 +802,7 @@ func (q *pointerQueue) deliverEnterLeaveEvents(p *pointerInfo, events *handlerEv
} }
} }
} else { } else {
p.handlers = append(p.handlers[:0], hits...) p.handlers = hits
} }
} }
// Deliver Leave events. // Deliver Leave events.
@@ -841,7 +833,7 @@ func (q *pointerQueue) deliverEnterLeaveEvents(p *pointerInfo, events *handlerEv
events.Add(k, e) events.Add(k, e)
} }
} }
p.entered = append(p.entered[:0], hits...) p.entered = hits
} }
func (q *pointerQueue) deliverDragEvent(p *pointerInfo, events *handlerEvents) { func (q *pointerQueue) deliverDragEvent(p *pointerInfo, events *handlerEvents) {