summaryrefslogtreecommitdiff
authorStark Li <stark.li@amlogic.com>2017-04-11 08:13:26 (GMT)
committer Tellen Yu <tellen.yu@amlogic.com>2017-04-11 08:19:34 (GMT)
commit53b19fcdf188c9929ec41afcdda12783a7b9709d (patch)
treea99455a096bb7ec88774eab6fa0da51a8f055253
parent660aa9d2da64e265693ead517c45991bd8ab6896 (diff)
downloadhwcomposer-53b19fcdf188c9929ec41afcdda12783a7b9709d.zip
hwcomposer-53b19fcdf188c9929ec41afcdda12783a7b9709d.tar.gz
hwcomposer-53b19fcdf188c9929ec41afcdda12783a7b9709d.tar.bz2
PD#142477: fix TV osd is blanked
Change-Id: Ie0509c486e89cdbc5334e674ce45609fee87d68f
Diffstat
-rw-r--r--hwc2/common/devices/PhysicalDevice.cpp15
1 files changed, 10 insertions, 5 deletions
diff --git a/hwc2/common/devices/PhysicalDevice.cpp b/hwc2/common/devices/PhysicalDevice.cpp
index 04bf089..bc15689 100644
--- a/hwc2/common/devices/PhysicalDevice.cpp
+++ b/hwc2/common/devices/PhysicalDevice.cpp
@@ -704,14 +704,18 @@ int32_t PhysicalDevice::postFramebuffer(int32_t* outRetireFence, bool hasVideoOv
if (hasVideoOverlay && (layerNum == 1 || (layerNum == 2 && haveCursorLayer)))
needBlankFb0 = true;
- if (needBlankFb0) {
- mFbSyncRequest.op |= OSD_BLANK_OP_BIT;
+ if (mIsContinuousBuf) {
+ // bit 0 is osd blank flag.
+ if (needBlankFb0) {
+ mFbSyncRequest.op |= OSD_BLANK_OP_BIT;
+ } else {
+ mFbSyncRequest.op &= ~(OSD_BLANK_OP_BIT);
+ }
+ mFramebufferContext->setStatus(needBlankFb0);
} else {
- mFbSyncRequest.op &= ~(OSD_BLANK_OP_BIT);
+ setOSD0Blank(needBlankFb0);
}
- mFramebufferContext->setStatus(needBlankFb0);
-
if (!mClientTargetHnd || private_handle_t::validate(mClientTargetHnd) < 0 || mPowerMode == HWC2_POWER_MODE_OFF) {
ETRACE("Post blank to screen, mClientTargetHnd(%p, %d), mTargetAcquireFence(%d)",
mClientTargetHnd, private_handle_t::validate(mClientTargetHnd), mTargetAcquireFence);
@@ -723,6 +727,7 @@ int32_t PhysicalDevice::postFramebuffer(int32_t* outRetireFence, bool hasVideoOv
//for nothing to display, post blank to osd which will signal the last retire fence.
mFbSyncRequest.type = DIRECT_COMPOSE_MODE;
mFbSyncRequest.op |= OSD_BLANK_OP_BIT;
+ mFramebufferContext->setStatus(true);
mPriorFrameRetireFence = hwc_fb_post_with_fence_locked(&fbInfo, &mFbSyncRequest, NULL);
} else {
*outRetireFence = HwcFenceControl::dupFence(mPriorFrameRetireFence);