mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-29 07:42:04 +00:00
Bug 775697 - Cancel layer transactions that haven't ended after nsDisplaySVGEffects::PaintAsLayer returns. r=roc.
This commit is contained in:
parent
f28956b0e5
commit
613454044e
@ -384,6 +384,16 @@ BasicLayerManager::EndTransaction(DrawThebesLayerCallback aCallback,
|
||||
EndTransactionInternal(aCallback, aCallbackData, aFlags);
|
||||
}
|
||||
|
||||
void
|
||||
BasicLayerManager::AbortTransaction()
|
||||
{
|
||||
NS_ASSERTION(InConstruction(), "Should be in construction phase");
|
||||
#ifdef DEBUG
|
||||
mPhase = PHASE_NONE;
|
||||
#endif
|
||||
mUsingDefaultTarget = false;
|
||||
}
|
||||
|
||||
bool
|
||||
BasicLayerManager::EndTransactionInternal(DrawThebesLayerCallback aCallback,
|
||||
void* aCallbackData,
|
||||
|
@ -94,6 +94,7 @@ public:
|
||||
virtual void EndTransaction(DrawThebesLayerCallback aCallback,
|
||||
void* aCallbackData,
|
||||
EndTransactionFlags aFlags = END_DEFAULT);
|
||||
void AbortTransaction();
|
||||
|
||||
virtual void SetRoot(Layer* aLayer);
|
||||
|
||||
|
@ -1636,6 +1636,9 @@ PaintInactiveLayer(nsDisplayListBuilder* aBuilder,
|
||||
aLayerBuilder->WillEndTransaction(tempManager);
|
||||
if (aItem->GetType() == nsDisplayItem::TYPE_SVG_EFFECTS) {
|
||||
static_cast<nsDisplaySVGEffects*>(aItem)->PaintAsLayer(aBuilder, aCtx, tempManager);
|
||||
if (tempManager->InTransaction()) {
|
||||
tempManager->AbortTransaction();
|
||||
}
|
||||
} else {
|
||||
tempManager->EndTransaction(FrameLayerBuilder::DrawThebesLayer, aBuilder);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user