Implement getDisplayInfo()
This change implements getDisplayInfo() method that returns the main
display information from SurfaceComposerClient.
Bug: 141886260
Test: VtsHalEvsV1_1TargetTest
Change-Id: I6fe05aef9868c202e8b0a4664783122180235fe0
Signed-off-by: Changyeon Jo <changyeon@google.com>
diff --git a/services/automotive/display/CarWindowService.cpp b/services/automotive/display/CarWindowService.cpp
index fbefef0..09ae34a 100644
--- a/services/automotive/display/CarWindowService.cpp
+++ b/services/automotive/display/CarWindowService.cpp
@@ -17,8 +17,6 @@
#include <utility>
#include <gui/bufferqueue/2.0/B2HGraphicBufferProducer.h>
-#include <ui/DisplayConfig.h>
-#include <ui/DisplayState.h>
#include "CarWindowService.h"
@@ -48,26 +46,24 @@
return nullptr;
}
- DisplayConfig displayConfig;
- err = SurfaceComposerClient::getActiveDisplayConfig(displayToken, &displayConfig);
+ err = SurfaceComposerClient::getActiveDisplayConfig(displayToken, &mDpyConfig);
if (err != NO_ERROR) {
ALOGE("Failed to get active display config");
return nullptr;
}
- ui::DisplayState displayState;
- err = SurfaceComposerClient::getDisplayState(displayToken, &displayState);
+ err = SurfaceComposerClient::getDisplayState(displayToken, &mDpyState);
if (err != NO_ERROR) {
ALOGE("Failed to get display state");
return nullptr;
}
- const ui::Size& resolution = displayConfig.resolution;
+ const ui::Size& resolution = mDpyConfig.resolution;
auto width = resolution.getWidth();
auto height = resolution.getHeight();
- if (displayState.orientation == ui::ROTATION_90 ||
- displayState.orientation == ui::ROTATION_270) {
+ if (mDpyState.orientation == ui::ROTATION_90 ||
+ mDpyState.orientation == ui::ROTATION_270) {
std::swap(width, height);
}
diff --git a/services/automotive/display/include/CarWindowService.h b/services/automotive/display/include/CarWindowService.h
index 3290cc7..d635f5a 100644
--- a/services/automotive/display/include/CarWindowService.h
+++ b/services/automotive/display/include/CarWindowService.h
@@ -20,6 +20,8 @@
#include <gui/IGraphicBufferProducer.h>
#include <gui/Surface.h>
#include <gui/SurfaceComposerClient.h>
+#include <ui/DisplayConfig.h>
+#include <ui/DisplayState.h>
namespace android {
namespace frameworks {
@@ -37,11 +39,23 @@
Return<sp<IGraphicBufferProducer>> getIGraphicBufferProducer() override;
Return<bool> showWindow() override;
Return<bool> hideWindow() override;
+ Return<void> getDisplayInfo(getDisplayInfo_cb _info_cb) override {
+ HwDisplayConfig cfg;
+ cfg.setToExternal((uint8_t*)&mDpyConfig, sizeof(DisplayConfig));
+
+ HwDisplayState state;
+ state.setToExternal((uint8_t*)&mDpyState, sizeof(DisplayState));
+
+ _info_cb(cfg, state);
+ return hardware::Void();
+ }
private:
sp<android::Surface> mSurface;
sp<android::SurfaceComposerClient> mSurfaceComposerClient;
sp<android::SurfaceControl> mSurfaceControl;
+ DisplayConfig mDpyConfig;
+ DisplayState mDpyState;
};
} // namespace implementation
} // namespace V1_0