35 lines
1.7 KiB
Diff
35 lines
1.7 KiB
Diff
commit 7a8497c0df722b1ed145b99a82c71ed1f7b1d6ce
|
|
Author: Markus Stange <mstange@themasta.com>
|
|
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<BasicContainerLayer*>(aLayer);
|
|
- bool needsGroup = aLayer->GetFirstChild() &&
|
|
+ BasicContainerLayer* container =
|
|
+ static_cast<BasicContainerLayer*>(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");
|