summaryrefslogtreecommitdiffstats
path: root/libs
diff options
context:
space:
mode:
authorJeff Brown <jeffbrown@android.com>2011-05-24 11:23:27 -0700
committerJeff Brown <jeffbrown@android.com>2011-05-25 14:37:16 -0700
commit5ced76a14350db56f1a80f00076f8be3d982c389 (patch)
treee4999223efed26ef0864761a1a47bafaf99e1dac /libs
parent7157f6fe13ab7e2fef44cc33c95d1c531418220f (diff)
downloadframeworks_base-5ced76a14350db56f1a80f00076f8be3d982c389.zip
frameworks_base-5ced76a14350db56f1a80f00076f8be3d982c389.tar.gz
frameworks_base-5ced76a14350db56f1a80f00076f8be3d982c389.tar.bz2
Coalesce input events that arrive faster than 333Hz. (DO NOT MERGE)
Some drivers report individual finger updates one at a time instead of all at once. When 10 fingers are down, this can cause the framework to have to handle 10 times as many events each with 10 times as much data. Applications like PointerLocation would get significantly bogged down by all of the redundant samples. This change coalesces samples that are closely spaced in time, before they are dispatched, as part of the motion event batching protocol. Increased the size of the InputChannel shared memory buffer so that applications can catch up faster if they accumulate a backlog of samples. Change-Id: Ibc6abf8af027d9003011ac75caa12941080caba3
Diffstat (limited to 'libs')
-rw-r--r--libs/ui/InputTransport.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/libs/ui/InputTransport.cpp b/libs/ui/InputTransport.cpp
index 9d1b8b9..93d0d1f 100644
--- a/libs/ui/InputTransport.cpp
+++ b/libs/ui/InputTransport.cpp
@@ -27,8 +27,14 @@
namespace android {
+#define ROUND_UP(value, boundary) (((value) + (boundary) - 1) & ~((boundary) - 1))
+#define MIN_HISTORY_DEPTH 20
+
// Must be at least sizeof(InputMessage) + sufficient space for pointer data
-static const int DEFAULT_MESSAGE_BUFFER_SIZE = 16384;
+static const int DEFAULT_MESSAGE_BUFFER_SIZE = ROUND_UP(
+ sizeof(InputMessage) + MIN_HISTORY_DEPTH
+ * (sizeof(InputMessage::SampleData) + MAX_POINTERS * sizeof(PointerCoords)),
+ 4096);
// Signal sent by the producer to the consumer to inform it that a new message is
// available to be consumed in the shared memory buffer.