diff options
author | Jeff Brown <jeffbrown@google.com> | 2010-06-16 01:53:36 -0700 |
---|---|---|
committer | Jeff Brown <jeffbrown@google.com> | 2010-06-17 13:27:16 -0700 |
commit | 5c225b1680e696ae8bbf505a1997d6f720672f74 (patch) | |
tree | 932326fd02ee91d8a64adfcc9415027646c56563 /libs/ui/Input.cpp | |
parent | 3a0146cd29fae3c5bc29d8d535d67826284f8cc9 (diff) | |
download | frameworks_base-5c225b1680e696ae8bbf505a1997d6f720672f74.zip frameworks_base-5c225b1680e696ae8bbf505a1997d6f720672f74.tar.gz frameworks_base-5c225b1680e696ae8bbf505a1997d6f720672f74.tar.bz2 |
Even more native input dispatch work in progress.
Added more tests.
Fixed a regression in Vector.
Fixed bugs in pointer tracking.
Fixed a starvation issue in PollLoop when setting or removing callbacks.
Fixed a couple of policy nits.
Modified the internal representation of MotionEvent to be more
efficient and more consistent.
Added code to skip/cancel virtual key processing when there are multiple
pointers down. This helps to better disambiguate virtual key presses
from stray touches (such as cheek presses).
Change-Id: I2a7d2cce0195afb9125b23378baa94fd2fc6671c
Diffstat (limited to 'libs/ui/Input.cpp')
-rw-r--r-- | libs/ui/Input.cpp | 45 |
1 files changed, 30 insertions, 15 deletions
diff --git a/libs/ui/Input.cpp b/libs/ui/Input.cpp index d367708..0e6f2f5 100644 --- a/libs/ui/Input.cpp +++ b/libs/ui/Input.cpp @@ -50,8 +50,8 @@ void MotionEvent::initialize( int32_t action, int32_t edgeFlags, int32_t metaState, - float rawX, - float rawY, + float xOffset, + float yOffset, float xPrecision, float yPrecision, nsecs_t downTime, @@ -63,8 +63,8 @@ void MotionEvent::initialize( mAction = action; mEdgeFlags = edgeFlags; mMetaState = metaState; - mRawX = rawX; - mRawY = rawY; + mXOffset = xOffset; + mYOffset = yOffset; mXPrecision = xPrecision; mYPrecision = yPrecision; mDownTime = downTime; @@ -83,13 +83,8 @@ void MotionEvent::addSample( } void MotionEvent::offsetLocation(float xOffset, float yOffset) { - if (xOffset != 0 || yOffset != 0) { - for (size_t i = 0; i < mSamplePointerCoords.size(); i++) { - PointerCoords& pointerCoords = mSamplePointerCoords.editItemAt(i); - pointerCoords.x += xOffset; - pointerCoords.y += yOffset; - } - } + mXOffset += xOffset; + mYOffset += yOffset; } } // namespace android @@ -163,6 +158,14 @@ int64_t motion_event_get_event_time(const input_event_t* motion_event) { return reinterpret_cast<const MotionEvent*>(motion_event)->getEventTime(); } +float motion_event_get_x_offset(const input_event_t* motion_event) { + return reinterpret_cast<const MotionEvent*>(motion_event)->getXOffset(); +} + +float motion_event_get_y_offset(const input_event_t* motion_event) { + return reinterpret_cast<const MotionEvent*>(motion_event)->getYOffset(); +} + float motion_event_get_x_precision(const input_event_t* motion_event) { return reinterpret_cast<const MotionEvent*>(motion_event)->getXPrecision(); } @@ -179,12 +182,12 @@ int32_t motion_event_get_pointer_id(const input_event_t* motion_event, size_t po return reinterpret_cast<const MotionEvent*>(motion_event)->getPointerId(pointer_index); } -float motion_event_get_raw_x(const input_event_t* motion_event) { - return reinterpret_cast<const MotionEvent*>(motion_event)->getRawX(); +float motion_event_get_raw_x(const input_event_t* motion_event, size_t pointer_index) { + return reinterpret_cast<const MotionEvent*>(motion_event)->getRawX(pointer_index); } -float motion_event_get_raw_y(const input_event_t* motion_event) { - return reinterpret_cast<const MotionEvent*>(motion_event)->getRawY(); +float motion_event_get_raw_y(const input_event_t* motion_event, size_t pointer_index) { + return reinterpret_cast<const MotionEvent*>(motion_event)->getRawY(pointer_index); } float motion_event_get_x(const input_event_t* motion_event, size_t pointer_index) { @@ -213,6 +216,18 @@ int64_t motion_event_get_historical_event_time(input_event_t* motion_event, history_index); } +float motion_event_get_historical_raw_x(input_event_t* motion_event, size_t pointer_index, + size_t history_index) { + return reinterpret_cast<const MotionEvent*>(motion_event)->getHistoricalRawX( + pointer_index, history_index); +} + +float motion_event_get_historical_raw_y(input_event_t* motion_event, size_t pointer_index, + size_t history_index) { + return reinterpret_cast<const MotionEvent*>(motion_event)->getHistoricalRawY( + pointer_index, history_index); +} + float motion_event_get_historical_x(input_event_t* motion_event, size_t pointer_index, size_t history_index) { return reinterpret_cast<const MotionEvent*>(motion_event)->getHistoricalX( |