summaryrefslogtreecommitdiff
path: root/libs/input/Input.cpp
diff options
context:
space:
mode:
author Prabir Pradhan <prabirmsp@google.com> 2021-07-28 17:13:34 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2021-07-28 17:13:34 +0000
commit15c1c683fd5a19c63fc6a74973d67839f4687523 (patch)
tree13b1c1b5ab6b9f8949c186da3c62a18cc70b4ce5 /libs/input/Input.cpp
parent2c7d7d9680fcd7d12c7a6bea4537c858bfd2ea1a (diff)
parent7e1443fba3f81742b29e28f246e8d6b236c251a7 (diff)
Merge "MotionEvent: Guard getRawX/Y compatibility logic using feature flag" into sc-dev
Diffstat (limited to 'libs/input/Input.cpp')
-rw-r--r--libs/input/Input.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/libs/input/Input.cpp b/libs/input/Input.cpp
index 70ed438112..d954d23507 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 <input/Input.h>
#include <input/InputDevice.h>
@@ -41,6 +42,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.
@@ -506,6 +516,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.