OSDN Git Service

Recompute visible regions more vigorously
authorAndy McFadden <fadden@android.com>
Wed, 26 Sep 2012 23:19:12 +0000 (16:19 -0700)
committerAndy McFadden <fadden@android.com>
Wed, 26 Sep 2012 23:19:12 +0000 (16:19 -0700)
Some of the code in latchBuffer was calling invalidateHwcGeometry,
but that didn't cause the SurfaceFlinger visible region code to
re-evaluate the layer's visibility.  Set the recomputeVisibleRegions
"out" parameter instead.

Bug 7235797

Change-Id: If6ba33fbd1a594cd64cc5253aebf752d6ceda1c9

services/surfaceflinger/Layer.cpp

index 41c4963..c2da238 100644 (file)
@@ -655,7 +655,7 @@ Region Layer::latchBuffer(bool& recomputeVisibleRegions)
         if (oldActiveBuffer == NULL) {
              // the first time we receive a buffer, we need to trigger a
              // geometry invalidation.
-             mFlinger->invalidateHwcGeometry();
+            recomputeVisibleRegions = true;
          }
 
         Rect crop(mSurfaceTexture->getCurrentCrop());
@@ -668,7 +668,7 @@ Region Layer::latchBuffer(bool& recomputeVisibleRegions)
             mCurrentCrop = crop;
             mCurrentTransform = transform;
             mCurrentScalingMode = scalingMode;
-            mFlinger->invalidateHwcGeometry();
+            recomputeVisibleRegions = true;
         }
 
         if (oldActiveBuffer != NULL) {
@@ -676,7 +676,7 @@ Region Layer::latchBuffer(bool& recomputeVisibleRegions)
             uint32_t bufHeight = mActiveBuffer->getHeight();
             if (bufWidth != uint32_t(oldActiveBuffer->width) ||
                 bufHeight != uint32_t(oldActiveBuffer->height)) {
-                mFlinger->invalidateHwcGeometry();
+                recomputeVisibleRegions = true;
             }
         }