From 53b19fcdf188c9929ec41afcdda12783a7b9709d Mon Sep 17 00:00:00 2001 From: Stark Li Date: Tue, 11 Apr 2017 08:13:26 +0000 Subject: PD#142477: fix TV osd is blanked Change-Id: Ie0509c486e89cdbc5334e674ce45609fee87d68f --- 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); -- cgit