summaryrefslogtreecommitdiffstats
path: root/services/surfaceflinger
diff options
context:
space:
mode:
authorMathias Agopian <mathias@google.com>2011-09-22 20:57:04 -0700
committerMathias Agopian <mathias@google.com>2011-09-26 16:14:05 -0700
commit81f69ba56a5ad50ae9abe851de64f74a2f09de84 (patch)
treeb7b71d38b35e6c94b67fb25101db1cf02093ee3a /services/surfaceflinger
parent892ac4155a7e2f2c824ee9898d4c5cef4bbe1afc (diff)
downloadframeworks_base-81f69ba56a5ad50ae9abe851de64f74a2f09de84.zip
frameworks_base-81f69ba56a5ad50ae9abe851de64f74a2f09de84.tar.gz
frameworks_base-81f69ba56a5ad50ae9abe851de64f74a2f09de84.tar.bz2
don't clear the framebuffer when the framebuffer is not used
when areas of the FB are undefined (transparent windows on top of nothing), we clear those areas before composition. however, it makes no sense to do this when the FB is not in use (case where hwc handles all layers) Bug: 5360529 Change-Id: I761a7d3664228ebbee0944aca8b0cc278fc94c9c
Diffstat (limited to 'services/surfaceflinger')
-rw-r--r--services/surfaceflinger/SurfaceFlinger.cpp11
1 files changed, 6 insertions, 5 deletions
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp
index 0ef03bb..2be6d18 100644
--- a/services/surfaceflinger/SurfaceFlinger.cpp
+++ b/services/surfaceflinger/SurfaceFlinger.cpp
@@ -986,19 +986,20 @@ void SurfaceFlinger::setupHardwareComposer(Region& dirtyInOut)
void SurfaceFlinger::composeSurfaces(const Region& dirty)
{
- if (UNLIKELY(!mWormholeRegion.isEmpty())) {
+ const DisplayHardware& hw(graphicPlane(0).displayHardware());
+ HWComposer& hwc(hw.getHwComposer());
+
+ const size_t fbLayerCount = hwc.getLayerCount(HWC_FRAMEBUFFER);
+ if (UNLIKELY(fbLayerCount && !mWormholeRegion.isEmpty())) {
// should never happen unless the window manager has a bug
// draw something...
drawWormhole();
}
- const DisplayHardware& hw(graphicPlane(0).displayHardware());
- HWComposer& hwc(hw.getHwComposer());
- hwc_layer_t* const cur(hwc.getLayers());
-
/*
* and then, render the layers targeted at the framebuffer
*/
+ hwc_layer_t* const cur(hwc.getLayers());
const Vector< sp<LayerBase> >& layers(mVisibleLayersSortedByZ);
size_t count = layers.size();
for (size_t i=0 ; i<count ; i++) {