commit 7a8497c0df722b1ed145b99a82c71ed1f7b1d6ce Author: Markus Stange Date: Thu Oct 9 21:26:27 2014 -0400 Bug 1074280 - Use AsContainerLayer() in order to avoid a bad cast. r=roc, a=bkerensa Modified gfx/layers/basic/BasicLayerManager.cpp diff --git a/gfx/layers/basic/BasicLayerManager.cpp b/gfx/layers/basic/BasicLayerManager.cpp index 5a3a1f6..ff42bc0 100644 --- a/gfx/layers/basic/BasicLayerManager.cpp +++ b/gfx/layers/basic/BasicLayerManager.cpp @@ -901,18 +901,17 @@ BasicLayerManager::PaintLayer(gfxContext* aTarget, RenderTraceScope trace("BasicLayerManager::PaintLayer", "707070"); const nsIntRect* clipRect = aLayer->GetEffectiveClipRect(); - // aLayer might not be a container layer, but if so we take care not to use - // the container variable - BasicContainerLayer* container = static_cast(aLayer); - bool needsGroup = aLayer->GetFirstChild() && + BasicContainerLayer* container = + static_cast(aLayer->AsContainerLayer()); + bool needsGroup = container && container->UseIntermediateSurface(); BasicImplData* data = ToData(aLayer); bool needsClipToVisibleRegion = data->GetClipToVisibleRegion() && !aLayer->AsThebesLayer(); - NS_ASSERTION(needsGroup || !aLayer->GetFirstChild() || + NS_ASSERTION(needsGroup || !container || container->GetOperator() == CompositionOp::OP_OVER, "non-OVER operator should have forced UseIntermediateSurface"); - NS_ASSERTION(!aLayer->GetFirstChild() || !aLayer->GetMaskLayer() || + NS_ASSERTION(!container || !aLayer->GetMaskLayer() || container->UseIntermediateSurface(), "ContainerLayer with mask layer should force UseIntermediateSurface");