diff options
| author | 2009-06-28 02:54:16 -0700 | |
|---|---|---|
| committer | 2009-06-29 14:44:11 -0700 | |
| commit | 0aed7e97a3efbeec23a4aa301df03036a67f8ea3 (patch) | |
| tree | 4d3affe92460fce98c4215f486c988b65c6742af /libs/surfaceflinger/SurfaceFlinger.cpp | |
| parent | 8c9687ae291a1e0a63d4236069066284f56192cd (diff) | |
fix [1947273] the DimLayer causes the whole screen to update during transactions
Diffstat (limited to 'libs/surfaceflinger/SurfaceFlinger.cpp')
| -rw-r--r-- | libs/surfaceflinger/SurfaceFlinger.cpp | 11 | 
1 files changed, 6 insertions, 5 deletions
diff --git a/libs/surfaceflinger/SurfaceFlinger.cpp b/libs/surfaceflinger/SurfaceFlinger.cpp index 106af3f8bcf9..17cff553f963 100644 --- a/libs/surfaceflinger/SurfaceFlinger.cpp +++ b/libs/surfaceflinger/SurfaceFlinger.cpp @@ -725,10 +725,11 @@ void SurfaceFlinger::computeVisibleRegions(              dirty.orSelf(layer->visibleRegionScreen);              layer->contentDirty = false;          } else { -            // compute the exposed region -            // dirty = what's visible now - what's wasn't covered before -            //       = what's visible now & what's was covered before -            dirty = visibleRegion.intersect(layer->coveredRegionScreen);             +            /* compute the exposed region: +             *    exposed = what's VISIBLE and NOT COVERED now  +             *    but was COVERED before +             */ +            dirty = (visibleRegion - coveredRegion) & layer->coveredRegionScreen;          }          dirty.subtractSelf(aboveOpaqueLayers); @@ -737,7 +738,7 @@ void SurfaceFlinger::computeVisibleRegions(          // Update aboveOpaqueLayers/aboveCoveredLayers for next (lower) layer          aboveOpaqueLayers.orSelf(opaqueRegion); -        aboveCoveredLayers.orSelf(bounds); +        aboveCoveredLayers.orSelf(visibleRegion);          // Store the visible region is screen space          layer->setVisibleRegion(visibleRegion);  |