summaryrefslogtreecommitdiff
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);