diff options
-rw-r--r-- | libs/surfaceflinger/LayerBuffer.cpp | 6 | ||||
-rw-r--r-- | libs/surfaceflinger/LayerBuffer.h | 1 |
2 files changed, 5 insertions, 2 deletions
diff --git a/libs/surfaceflinger/LayerBuffer.cpp b/libs/surfaceflinger/LayerBuffer.cpp index 2d949a0..90e7f50 100644 --- a/libs/surfaceflinger/LayerBuffer.cpp +++ b/libs/surfaceflinger/LayerBuffer.cpp @@ -575,6 +575,7 @@ LayerBuffer::OverlaySource::OverlaySource(LayerBuffer& layer, mFormat = overlay->format; mWidthStride = overlay->w_stride; mHeightStride = overlay->h_stride; + mInitialized = false; mOverlayHandle = overlay->getHandleRef(overlay); @@ -614,8 +615,9 @@ void LayerBuffer::OverlaySource::onVisibilityResolved( // this code-path must be as tight as possible, it's called each time // the screen is composited. if (UNLIKELY(mOverlay != 0)) { - if (mVisibilityChanged) { + if (mVisibilityChanged || !mInitialized) { mVisibilityChanged = false; + mInitialized = true; const Rect& bounds = mLayer.getTransformedBounds(); int x = bounds.left; int y = bounds.top; @@ -627,7 +629,7 @@ void LayerBuffer::OverlaySource::onVisibilityResolved( if (mOverlay) { overlay_control_device_t* overlay_dev = mOverlayDevice; overlay_dev->setPosition(overlay_dev, mOverlay, x,y,w,h); - overlay_dev->setParameter(overlay_dev, mOverlay, + overlay_dev->setParameter(overlay_dev, mOverlay, OVERLAY_TRANSFORM, mLayer.getOrientation()); overlay_dev->commit(overlay_dev, mOverlay); } diff --git a/libs/surfaceflinger/LayerBuffer.h b/libs/surfaceflinger/LayerBuffer.h index 746790b..8057219 100644 --- a/libs/surfaceflinger/LayerBuffer.h +++ b/libs/surfaceflinger/LayerBuffer.h @@ -175,6 +175,7 @@ private: int32_t mWidthStride; int32_t mHeightStride; mutable Mutex mLock; + bool mInitialized; }; |