Handle empty HWC layer list when composing
Bug: 6777877 Change-Id: I71e9b948d04dda33d45cfa986d9c7e28328cf749
This commit is contained in:
parent
a49126087b
commit
a6b32db164
@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user