Skip to content

Commit

Permalink
Reduce temporary collections creation in updatePointerPositions
Browse files Browse the repository at this point in the history
  • Loading branch information
Walingar committed Mar 13, 2023
1 parent b473f5b commit 27a5bac
Showing 1 changed file with 13 additions and 8 deletions.
Expand Up @@ -493,15 +493,20 @@ class ComposeScene internal constructor(
}

private fun updatePointerPositions(event: PointerInputEvent) {
// touches/styluses positions should be removed from [pointerPositions] if they are not down anymore
val releasedPointers = event.pointers.filter { it.type != PointerType.Mouse && !it.down }
for (pointer in releasedPointers) {
pointerPositions.remove(pointer.id)
}
// update positions for pointers that are down + mouse
val pointersToUpdate = event.pointers - releasedPointers.toSet()
for (pointer in pointersToUpdate) {
pointerPositions[pointer.id] = pointer.position
for (pointer in event.pointers) {
if (pointer.type == PointerType.Mouse || pointer.down) {
pointerPositions[pointer.id] = pointer.position
}
}
// touches/styluses positions should be removed from [pointerPositions] if they are not down anymore
val iterator = pointerPositions.iterator()
while (iterator.hasNext()) {
val pointerId = iterator.next().key
val pointer = event.pointers.find { it.id == pointerId } ?: continue
if (pointer.type != PointerType.Mouse && !pointer.down) {
iterator.remove()
}
}
}

Expand Down

0 comments on commit 27a5bac

Please sign in to comment.