зеркало из https://github.com/mozilla/pjs.git
Bug 725925 - ShadowableThebesLayer does useless extra composite into 1x1 fake surface. r=cjones
This commit is contained in:
Родитель
88598366da
Коммит
9de30fca2d
|
@ -763,7 +763,9 @@ BasicThebesLayer::PaintThebes(gfxContext* aContext,
|
||||||
if (BasicManager()->IsTransactionIncomplete())
|
if (BasicManager()->IsTransactionIncomplete())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!IsHidden()) {
|
gfxRect clipExtents;
|
||||||
|
clipExtents = aContext->GetClipExtents();
|
||||||
|
if (!IsHidden() && !clipExtents.IsEmpty()) {
|
||||||
AutoSetOperator setOperator(aContext, GetOperator());
|
AutoSetOperator setOperator(aContext, GetOperator());
|
||||||
mBuffer.DrawTo(this, aContext, opacity);
|
mBuffer.DrawTo(this, aContext, opacity);
|
||||||
}
|
}
|
||||||
|
@ -1946,6 +1948,11 @@ BasicLayerManager::PaintLayer(gfxContext* aTarget,
|
||||||
NS_ABORT_IF_FALSE(untransformedSurface,
|
NS_ABORT_IF_FALSE(untransformedSurface,
|
||||||
"We should always allocate an untransformed surface with 3d transforms!");
|
"We should always allocate an untransformed surface with 3d transforms!");
|
||||||
|
|
||||||
|
// Temporary fast fix for bug 725886
|
||||||
|
// Revert these changes when 725886 is ready
|
||||||
|
gfxRect clipExtents;
|
||||||
|
clipExtents = aTarget->GetClipExtents();
|
||||||
|
if (!clipExtents.IsEmpty()) {
|
||||||
gfxPoint offset;
|
gfxPoint offset;
|
||||||
bool dontBlit = needsClipToVisibleRegion || mTransactionIncomplete ||
|
bool dontBlit = needsClipToVisibleRegion || mTransactionIncomplete ||
|
||||||
aLayer->GetEffectiveOpacity() != 1.0f;
|
aLayer->GetEffectiveOpacity() != 1.0f;
|
||||||
|
@ -1958,6 +1965,7 @@ BasicLayerManager::PaintLayer(gfxContext* aTarget,
|
||||||
aTarget->SetSource(result, offset);
|
aTarget->SetSource(result, offset);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
// If we're doing our own double-buffering, we need to avoid drawing
|
// If we're doing our own double-buffering, we need to avoid drawing
|
||||||
// the results of an incomplete transaction to the destination surface ---
|
// the results of an incomplete transaction to the destination surface ---
|
||||||
// that could cause flicker. Double-buffering is implemented using a
|
// that could cause flicker. Double-buffering is implemented using a
|
||||||
|
|
|
@ -530,6 +530,8 @@ PuppetWidget::DispatchPaintEvent()
|
||||||
DispatchEvent(&event, status);
|
DispatchEvent(&event, status);
|
||||||
} else {
|
} else {
|
||||||
nsRefPtr<gfxContext> ctx = new gfxContext(mSurface);
|
nsRefPtr<gfxContext> ctx = new gfxContext(mSurface);
|
||||||
|
ctx->Rectangle(gfxRect(0,0,0,0));
|
||||||
|
ctx->Clip();
|
||||||
AutoLayerManagerSetup setupLayerManager(this, ctx,
|
AutoLayerManagerSetup setupLayerManager(this, ctx,
|
||||||
BasicLayerManager::BUFFER_NONE);
|
BasicLayerManager::BUFFER_NONE);
|
||||||
DispatchEvent(&event, status);
|
DispatchEvent(&event, status);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче