OSDN Git Service

Stop using transparent region for computing visible regions (DO NOT MERGE)
authorJesse Hall <jessehall@google.com>
Mon, 8 Oct 2012 17:39:21 +0000 (10:39 -0700)
committerJesse Hall <jessehall@google.com>
Mon, 8 Oct 2012 17:56:03 +0000 (10:56 -0700)
commit0de75f3f53ad2e3eb4c6820446c5175191b6631a
treedf402a9f06ff5c9668fb97b34e06e2240f505305
parent52f1edb3f11aae1af74a1bfc6f18f81b4d761358
Stop using transparent region for computing visible regions (DO NOT MERGE)

The transparent region hint is computed only from view layout
locations, ignoring post-layout translation. If a SurfaceView is layed
out with no other views above it, but a view is moved above it
post-layout, that view's layout bounds would be subtracted from the
window's transparent region instead of its drawing bounds. Prior to
this change, the view would not be visible (except where its layout
bounds and drawing bounds overlap).

With this change, composition uses visible regions computed without
regard to the transparent regions. However, if all of a layer's
visible region is transparent, it will be removed from the list of
layers to composite. This doesn't fix the root problem of incorrect
transparent regions, and doesn't prevent bad composition in all cases.
But it does avoid it for some existing apps, while still allowing the
transparent region hint to save power in the important
fullscreen-video-in-a-SurfaceView case.

Change-Id: If2d929a10399b80401ef902abb232233a7f3d16d
services/surfaceflinger/LayerBase.cpp
services/surfaceflinger/LayerBase.h
services/surfaceflinger/SurfaceFlinger.cpp