From ffae4fcc78d0f280da6052d102b11962fb8041b7 Mon Sep 17 00:00:00 2001 From: Mathias Agopian Date: Fri, 4 Sep 2009 19:50:23 -0700 Subject: attempt to fix [2099362] Possible SurfaceFlinger crash --- libs/surfaceflinger/SurfaceFlinger.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'libs/surfaceflinger') diff --git a/libs/surfaceflinger/SurfaceFlinger.cpp b/libs/surfaceflinger/SurfaceFlinger.cpp index a72294a..c78921a 100644 --- a/libs/surfaceflinger/SurfaceFlinger.cpp +++ b/libs/surfaceflinger/SurfaceFlinger.cpp @@ -573,8 +573,10 @@ void SurfaceFlinger::handleTransaction(uint32_t transactionFlags) // do this without lock held const size_t count = ditchedLayers.size(); for (size_t i=0 ; iditch(); + if (ditchedLayers[i] != 0) { + //LOGD("ditching layer %p", ditchedLayers[i].get()); + ditchedLayers[i]->ditch(); + } } } @@ -1082,6 +1084,8 @@ status_t SurfaceFlinger::invalidateLayerVisibility(const sp& layer) status_t SurfaceFlinger::addLayer_l(const sp& layer) { + if (layer == 0) + return BAD_VALUE; ssize_t i = mCurrentState.layersSortedByZ.add( layer, &LayerBase::compareCurrentStateZ); sp lbc = LayerBase::dynamicCast< LayerBaseClient* >(layer.get()); -- cgit v1.1