summaryrefslogtreecommitdiff
path: root/libs/input/Input.cpp
diff options
context:
space:
mode:
author Prabir Pradhan <prabirmsp@google.com> 2021-07-28 17:44:32 +0000
committer Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> 2021-07-28 17:44:32 +0000
commitd8208f18db61fef00afb5f598826059942d21bb7 (patch)
treee49568ac4d7c5a688a269a4999f786cfb7d09f3e /libs/input/Input.cpp
parent47539161a7945697b9601477f833305763cf4cac (diff)
parentec016950c078c45081a3f83597828b8ccb9b102d (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.cpp12
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.