SurfaceFlinger Input: Shrink frame by surfaceInsets.
Probably best explained by the comment in InputWindow.h. We can't
use touchable region because we need to shift the coordinate space.
As a follow-up I'm going to look in to shifting the coordinate space
on the client but it was very non obvious where to do so.
Test: Manual
Bug: 80101428
Bug: 113136004
Bug: 111440400
Change-Id: Ibbaffa89a80f3a047c716265251f547631bdf802
diff --git a/libs/input/InputWindow.cpp b/libs/input/InputWindow.cpp
index b1d9d6a..e6bb255 100644
--- a/libs/input/InputWindow.cpp
+++ b/libs/input/InputWindow.cpp
@@ -81,6 +81,7 @@
output.writeInt32(frameTop);
output.writeInt32(frameRight);
output.writeInt32(frameBottom);
+ output.writeInt32(surfaceInset);
output.writeFloat(scaleFactor);
output.writeBool(visible);
output.writeBool(canReceiveKeys);
@@ -119,6 +120,7 @@
ret.frameTop = from.readInt32();
ret.frameRight = from.readInt32();
ret.frameBottom = from.readInt32();
+ ret.surfaceInset = from.readInt32();
ret.scaleFactor = from.readFloat();
ret.visible = from.readBool();
ret.canReceiveKeys = from.readBool();
diff --git a/libs/input/tests/InputWindow_test.cpp b/libs/input/tests/InputWindow_test.cpp
index ea98f8a..cc6962f 100644
--- a/libs/input/tests/InputWindow_test.cpp
+++ b/libs/input/tests/InputWindow_test.cpp
@@ -47,6 +47,7 @@
i.frameTop = 34;
i.frameRight = 16;
i.frameBottom = 19;
+ i.surfaceInset = 17;
i.scaleFactor = 0.3;
i.visible = false;
i.canReceiveKeys = false;
@@ -73,6 +74,7 @@
ASSERT_EQ(i.frameTop, i2.frameTop);
ASSERT_EQ(i.frameRight, i2.frameRight);
ASSERT_EQ(i.frameBottom, i2.frameBottom);
+ ASSERT_EQ(i.surfaceInset, i2.surfaceInset);
ASSERT_EQ(i.scaleFactor, i2.scaleFactor);
ASSERT_EQ(i.visible, i2.visible);
ASSERT_EQ(i.canReceiveKeys, i2.canReceiveKeys);