diff options
| author | 2021-07-28 17:44:32 +0000 | |
|---|---|---|
| committer | 2021-07-28 17:44:32 +0000 | |
| commit | d8208f18db61fef00afb5f598826059942d21bb7 (patch) | |
| tree | e49568ac4d7c5a688a269a4999f786cfb7d09f3e /libs/input/Input.cpp | |
| parent | 47539161a7945697b9601477f833305763cf4cac (diff) | |
| parent | ec016950c078c45081a3f83597828b8ccb9b102d (diff) | |
Merge "MotionEvent: Guard getRawX/Y compatibility logic using feature flag" into sc-dev am: 15c1c683fd am: ec016950c0
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/native/+/15371962
Change-Id: I153b4547e1b0927718061eff425a340ef8e52e42
Diffstat (limited to 'libs/input/Input.cpp')
| -rw-r--r-- | libs/input/Input.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/libs/input/Input.cpp b/libs/input/Input.cpp index 53a8c4f16f..1e8ff945ef 100644 --- a/libs/input/Input.cpp +++ b/libs/input/Input.cpp @@ -23,6 +23,7 @@ #include <limits.h> #include <string.h> +#include <android-base/properties.h> #include <android-base/stringprintf.h> #include <gui/constants.h> #include <input/Input.h> @@ -42,6 +43,15 @@ namespace android { namespace { +// When per-window-input-rotation is enabled, InputFlinger works in the un-rotated display +// coordinates and SurfaceFlinger includes the display rotation in the input window transforms. +bool isPerWindowInputRotationEnabled() { + static const bool PER_WINDOW_INPUT_ROTATION = + base::GetBoolProperty("persist.debug.per_window_input_rotation", false); + + return PER_WINDOW_INPUT_ROTATION; +} + float transformAngle(const ui::Transform& transform, float angleRadians) { // Construct and transform a vector oriented at the specified clockwise angle from vertical. // Coordinate system: down is increasing Y, right is increasing X. @@ -529,6 +539,8 @@ float MotionEvent::getHistoricalRawAxisValue(int32_t axis, size_t pointerIndex, size_t historicalIndex) const { const PointerCoords* coords = getHistoricalRawPointerCoords(pointerIndex, historicalIndex); + if (!isPerWindowInputRotationEnabled()) return coords->getAxisValue(axis); + if (axis == AMOTION_EVENT_AXIS_X || axis == AMOTION_EVENT_AXIS_Y) { // For compatibility, convert raw coordinates into "oriented screen space". Once app // developers are educated about getRaw, we can consider removing this. |