mirror of
https://git.sr.ht/~eliasnaur/gio
synced 2026-07-04 08:55:35 +00:00
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:
+8
-16
@@ -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) {
|
||||||
|
|||||||
Reference in New Issue
Block a user