summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Vishnu Nair <vishnun@google.com> 2022-01-13 12:05:54 -0800
committer Tiger Huang <tigerhuang@google.com> 2022-01-20 11:19:55 +0800
commitd0a896595f0aa62b36fdcc5a54214dcefbf46f73 (patch)
tree0e9e92624b449894575f00455809bbfd32949d0a
parentf22b3b79abb741f7e44dc359c621592bfba450fe (diff)
Pipe display install orientation 1/2
This is a step to move the layout logic to the client side. We won't invoke IWindowSession#relayout then, and the client should be able to set the transform hint on its own. Bug: 161810301 Test: presubmit Change-Id: I541b70fb921e22ab46ccb22391b8ca65eeb3d1a4
-rw-r--r--libs/ui/StaticDisplayInfo.cpp5
-rw-r--r--libs/ui/include/ui/StaticDisplayInfo.h2
-rw-r--r--services/surfaceflinger/SurfaceFlinger.cpp3
3 files changed, 9 insertions, 1 deletions
diff --git a/libs/ui/StaticDisplayInfo.cpp b/libs/ui/StaticDisplayInfo.cpp
index b66b281394..03d15e4694 100644
--- a/libs/ui/StaticDisplayInfo.cpp
+++ b/libs/ui/StaticDisplayInfo.cpp
@@ -29,7 +29,8 @@ size_t StaticDisplayInfo::getFlattenedSize() const {
return FlattenableHelpers::getFlattenedSize(connectionType) +
FlattenableHelpers::getFlattenedSize(density) +
FlattenableHelpers::getFlattenedSize(secure) +
- FlattenableHelpers::getFlattenedSize(deviceProductInfo);
+ FlattenableHelpers::getFlattenedSize(deviceProductInfo) +
+ FlattenableHelpers::getFlattenedSize(installOrientation);
}
status_t StaticDisplayInfo::flatten(void* buffer, size_t size) const {
@@ -40,6 +41,7 @@ status_t StaticDisplayInfo::flatten(void* buffer, size_t size) const {
RETURN_IF_ERROR(FlattenableHelpers::flatten(&buffer, &size, density));
RETURN_IF_ERROR(FlattenableHelpers::flatten(&buffer, &size, secure));
RETURN_IF_ERROR(FlattenableHelpers::flatten(&buffer, &size, deviceProductInfo));
+ RETURN_IF_ERROR(FlattenableHelpers::flatten(&buffer, &size, installOrientation));
return OK;
}
@@ -48,6 +50,7 @@ status_t StaticDisplayInfo::unflatten(void const* buffer, size_t size) {
RETURN_IF_ERROR(FlattenableHelpers::unflatten(&buffer, &size, &density));
RETURN_IF_ERROR(FlattenableHelpers::unflatten(&buffer, &size, &secure));
RETURN_IF_ERROR(FlattenableHelpers::unflatten(&buffer, &size, &deviceProductInfo));
+ RETURN_IF_ERROR(FlattenableHelpers::unflatten(&buffer, &size, &installOrientation));
return OK;
}
diff --git a/libs/ui/include/ui/StaticDisplayInfo.h b/libs/ui/include/ui/StaticDisplayInfo.h
index e86ca29a2a..cc7c869b3b 100644
--- a/libs/ui/include/ui/StaticDisplayInfo.h
+++ b/libs/ui/include/ui/StaticDisplayInfo.h
@@ -19,6 +19,7 @@
#include <optional>
#include <ui/DeviceProductInfo.h>
+#include <ui/Rotation.h>
#include <utils/Flattenable.h>
namespace android::ui {
@@ -31,6 +32,7 @@ struct StaticDisplayInfo : LightFlattenable<StaticDisplayInfo> {
float density = 0.f;
bool secure = false;
std::optional<DeviceProductInfo> deviceProductInfo;
+ Rotation installOrientation = ROTATION_0;
bool isFixedSize() const { return false; }
size_t getFlattenedSize() const;
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp
index 3fad6deb29..e07d02f5fa 100644
--- a/services/surfaceflinger/SurfaceFlinger.cpp
+++ b/services/surfaceflinger/SurfaceFlinger.cpp
@@ -1022,6 +1022,9 @@ status_t SurfaceFlinger::getStaticDisplayInfo(const sp<IBinder>& displayToken,
info->secure = display->isSecure();
info->deviceProductInfo = display->getDeviceProductInfo();
+ // TODO: Scale this to multiple displays.
+ info->installOrientation = display->isPrimary() ? internalDisplayOrientation : ui::ROTATION_0;
+
return NO_ERROR;
}