summaryrefslogtreecommitdiff
path: root/hwc3
diff options
context:
space:
mode:
authorMidas Chien <midaschieh@google.com>2022-02-16 10:44:21 +0000
committerMidas Chien <midaschieh@google.com>2022-02-17 13:29:23 +0800
commit1fbbdedc5425e4dfc06d39ee881ebda6aacd9b74 (patch)
tree6c86cc81954e4c13eb22a78e457f820d2f00c2a7 /hwc3
parent0ec8e120c9b88fb7dc7f590e23914dd8267a5941 (diff)
Revert "Revert "libhwc2.1: support setIdleTimerEnabled""
This reverts commit 13c602ef2fa6ec36e9ec02633ec7727fd4427d3c. Reason for revert: avc denied is addressed in another patch Bug: 219857957 Bug: 198808492 Test: composer access panel_idle withou avc denied Change-Id: If1753cde988d8e2c755168bbc174da9faf138b91
Diffstat (limited to 'hwc3')
-rw-r--r--hwc3/ComposerClient.cpp10
-rw-r--r--hwc3/impl/HalImpl.cpp12
-rw-r--r--hwc3/impl/HalImpl.h1
-rw-r--r--hwc3/include/IComposerHal.h2
4 files changed, 22 insertions, 3 deletions
diff --git a/hwc3/ComposerClient.cpp b/hwc3/ComposerClient.cpp
index 848d1f7..49d0e80 100644
--- a/hwc3/ComposerClient.cpp
+++ b/hwc3/ComposerClient.cpp
@@ -162,6 +162,16 @@ ndk::ScopedAStatus ComposerClient::getDisplayCapabilities(int64_t display,
return TO_BINDER_STATUS(err);
}
+ bool support = false;
+ err = mHal->getDisplayIdleTimerSupport(display, support);
+ if (err != ::android::OK) {
+ LOG(ERROR) << "failed to getDisplayIdleTimerSupport: " << err;
+ }
+
+ if (support) {
+ caps->push_back(DisplayCapability::DISPLAY_IDLE_TIMER);
+ }
+
return TO_BINDER_STATUS(err);
}
diff --git a/hwc3/impl/HalImpl.cpp b/hwc3/impl/HalImpl.cpp
index 1a56cfa..17fc4b2 100644
--- a/hwc3/impl/HalImpl.cpp
+++ b/hwc3/impl/HalImpl.cpp
@@ -941,12 +941,11 @@ int32_t HalImpl::setVsyncEnabled(int64_t display, bool enabled) {
return halDisplay->setVsyncEnabled(hwcEnable);
}
-int32_t HalImpl::setIdleTimerEnabled(int64_t display, int32_t __unused timeout) {
+int32_t HalImpl::setIdleTimerEnabled(int64_t display, int32_t timeout) {
ExynosDisplay* halDisplay;
RET_IF_ERR(getHalDisplay(display, halDisplay));
- // TODO(b/198808492): implement setIdleTimerEnabled
- return HWC2_ERROR_UNSUPPORTED;
+ return halDisplay->setDisplayIdleTimer(timeout);
}
int32_t HalImpl::validateDisplay(int64_t display, std::vector<int64_t>* outChangedLayers,
@@ -1016,4 +1015,11 @@ int32_t HalImpl::getRCDLayerSupport(int64_t display, bool& outSupport) {
return halDisplay->getRCDLayerSupport(outSupport);
}
+int32_t HalImpl::getDisplayIdleTimerSupport(int64_t display, bool& outSupport) {
+ ExynosDisplay* halDisplay;
+ RET_IF_ERR(getHalDisplay(display, halDisplay));
+
+ return halDisplay->getDisplayIdleTimerSupport(outSupport);
+}
+
} // namespace aidl::android::hardware::graphics::composer3::impl
diff --git a/hwc3/impl/HalImpl.h b/hwc3/impl/HalImpl.h
index 2c6d540..d60d7d0 100644
--- a/hwc3/impl/HalImpl.h
+++ b/hwc3/impl/HalImpl.h
@@ -135,6 +135,7 @@ class HalImpl : public IComposerHal {
int32_t setReadbackBuffer(int64_t display, buffer_handle_t buffer,
const ndk::ScopedFileDescriptor& releaseFence) override;
int32_t setVsyncEnabled(int64_t display, bool enabled) override;
+ int32_t getDisplayIdleTimerSupport(int64_t display, bool& outSupport) override;
int32_t setIdleTimerEnabled(int64_t display, int32_t timeout) override;
int32_t getRCDLayerSupport(int64_t display, bool& outSupport) override;
int32_t validateDisplay(int64_t display, std::vector<int64_t>* outChangedLayers,
diff --git a/hwc3/include/IComposerHal.h b/hwc3/include/IComposerHal.h
index 693c2b1..00bfdee 100644
--- a/hwc3/include/IComposerHal.h
+++ b/hwc3/include/IComposerHal.h
@@ -119,6 +119,8 @@ class IComposerHal {
virtual int32_t getDisplayAttribute(int64_t display, int32_t config,
DisplayAttribute attribute, int32_t* outValue) = 0;
virtual int32_t getDisplayBrightnessSupport(int64_t display, bool& outSupport) = 0;
+ virtual int32_t getDisplayIdleTimerSupport(int64_t display, bool& outSupport) = 0;
+
virtual int32_t getDisplayCapabilities(int64_t display,
std::vector<DisplayCapability>* caps) = 0;
virtual int32_t getDisplayConfigs(int64_t display, std::vector<int32_t>* configs) = 0;