Handle empty HWC layer list when composing

Bug: 6777877
Change-Id: I71e9b948d04dda33d45cfa986d9c7e28328cf749
This commit is contained in:
Jesse Hall 2012-07-19 16:44:38 -07:00
parent a49126087b
commit a6b32db164

View File

@ -1151,11 +1151,11 @@ void SurfaceFlinger::composeSurfaces(const DisplayHardware& hw, const Region& di
const Vector< sp<LayerBase> >& layers(hw.getVisibleLayersSortedByZ()); const Vector< sp<LayerBase> >& layers(hw.getVisibleLayersSortedByZ());
const size_t count = layers.size(); const size_t count = layers.size();
const Transform& tr = hw.getTransform(); const Transform& tr = hw.getTransform();
for (size_t i=0 ; cur!=end && i<count ; ++i, ++cur) { for (size_t i=0 ; i<count ; ++i) {
const sp<LayerBase>& layer(layers[i]); const sp<LayerBase>& layer(layers[i]);
const Region clip(dirty.intersect(tr.transform(layer->visibleRegion))); const Region clip(dirty.intersect(tr.transform(layer->visibleRegion)));
if (!clip.isEmpty()) { if (!clip.isEmpty()) {
if (cur->getCompositionType() == HWC_OVERLAY) { if (cur != end && cur->getCompositionType() == HWC_OVERLAY) {
if (i && (cur->getHints() & HWC_HINT_CLEAR_FB) if (i && (cur->getHints() & HWC_HINT_CLEAR_FB)
&& layer->isOpaque()) { && layer->isOpaque()) {
// never clear the very first layer since we're // never clear the very first layer since we're
@ -1167,6 +1167,9 @@ void SurfaceFlinger::composeSurfaces(const DisplayHardware& hw, const Region& di
// render the layer // render the layer
layer->draw(hw, clip); layer->draw(hw, clip);
} }
if (cur != end) {
++cur;
}
} }
} }
} }