diff options
author | 2022-01-13 12:05:54 -0800 | |
---|---|---|
committer | 2022-01-20 11:19:55 +0800 | |
commit | d0a896595f0aa62b36fdcc5a54214dcefbf46f73 (patch) | |
tree | 0e9e92624b449894575f00455809bbfd32949d0a | |
parent | f22b3b79abb741f7e44dc359c621592bfba450fe (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.cpp | 5 | ||||
-rw-r--r-- | libs/ui/include/ui/StaticDisplayInfo.h | 2 | ||||
-rw-r--r-- | services/surfaceflinger/SurfaceFlinger.cpp | 3 |
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; } |