summaryrefslogtreecommitdiff
authorStark Li <stark.li@amlogic.com>2017-03-06 09:03:19 (GMT)
committer Stark Li <stark.li@amlogic.com>2017-03-07 08:39:47 (GMT)
commitc7e1b641c5b8aa0f2dc1ed2f95034d8c1127bbf6 (patch)
tree456905b81f2a544fd1b5f3a5bdee4c6a06426f23
parent0bdb136ad905d4a7c0586fdf82f2eca5440a44ec (diff)
downloadhwcomposer-c7e1b641c5b8aa0f2dc1ed2f95034d8c1127bbf6.zip
hwcomposer-c7e1b641c5b8aa0f2dc1ed2f95034d8c1127bbf6.tar.gz
hwcomposer-c7e1b641c5b8aa0f2dc1ed2f95034d8c1127bbf6.tar.bz2
PD#139581: fix osd is blanked when opration DTV & ATV frequently on tv platform
Change-Id: I6942544ebd41e94693bc80814d5fa0c4fb9eb3fa
Diffstat
-rw-r--r--hwc2/common/devices/PhysicalDevice.cpp19
1 files changed, 11 insertions, 8 deletions
diff --git a/hwc2/common/devices/PhysicalDevice.cpp b/hwc2/common/devices/PhysicalDevice.cpp
index 1380f2f..0a6b903 100644
--- a/hwc2/common/devices/PhysicalDevice.cpp
+++ b/hwc2/common/devices/PhysicalDevice.cpp
@@ -691,16 +691,18 @@ int32_t PhysicalDevice::postFramebuffer(int32_t* outRetireFence, bool hasVideoOv
#endif
fbInfo.renderMode = mRenderMode;
- if (hasVideoOverlay && mHwcLayers.size() == 1) {
- if (mIsContinuousBuf)
+ bool onlyOneVideoLayer = false;
+ if (hasVideoOverlay && mHwcLayers.size() == 1) onlyOneVideoLayer = true;
+
+ if (mIsContinuousBuf) {
+ // bit 0 is osd blank flag.
+ fbInfo.op &= ~0x00000001;
+ if (onlyOneVideoLayer) {
fbInfo.op |= 0x00000001;
- else
- setOSD0Blank(true);
+ }
+ mFramebufferContext->setStatus(onlyOneVideoLayer);
} else {
- if (mIsContinuousBuf)
- fbInfo.op &= ~0x00000001;
- else
- setOSD0Blank(false);
+ setOSD0Blank(onlyOneVideoLayer);
}
if (!mClientTargetHnd || private_handle_t::validate(mClientTargetHnd) < 0 || mPowerMode == HWC2_POWER_MODE_OFF) {
@@ -1192,6 +1194,7 @@ int32_t PhysicalDevice::validateDisplay(uint32_t* outNumTypes,
#ifndef USE_CONTINOUS_BUFFER_COMPOSER
DTRACE("No continous buffer composer!");
noDevComp = true;
+ mIsContinuousBuf = false;
#endif
if (mHwcLayers.size() == 0) {