зеркало из 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())
|
||||
return;
|
||||
|
||||
if (!IsHidden()) {
|
||||
gfxRect clipExtents;
|
||||
clipExtents = aContext->GetClipExtents();
|
||||
if (!IsHidden() && !clipExtents.IsEmpty()) {
|
||||
AutoSetOperator setOperator(aContext, GetOperator());
|
||||
mBuffer.DrawTo(this, aContext, opacity);
|
||||
}
|
||||
|
@ -1946,6 +1948,11 @@ BasicLayerManager::PaintLayer(gfxContext* aTarget,
|
|||
NS_ABORT_IF_FALSE(untransformedSurface,
|
||||
"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;
|
||||
bool dontBlit = needsClipToVisibleRegion || mTransactionIncomplete ||
|
||||
aLayer->GetEffectiveOpacity() != 1.0f;
|
||||
|
@ -1958,6 +1965,7 @@ BasicLayerManager::PaintLayer(gfxContext* aTarget,
|
|||
aTarget->SetSource(result, offset);
|
||||
}
|
||||
}
|
||||
}
|
||||
// If we're doing our own double-buffering, we need to avoid drawing
|
||||
// the results of an incomplete transaction to the destination surface ---
|
||||
// that could cause flicker. Double-buffering is implemented using a
|
||||
|
|
|
@ -530,6 +530,8 @@ PuppetWidget::DispatchPaintEvent()
|
|||
DispatchEvent(&event, status);
|
||||
} else {
|
||||
nsRefPtr<gfxContext> ctx = new gfxContext(mSurface);
|
||||
ctx->Rectangle(gfxRect(0,0,0,0));
|
||||
ctx->Clip();
|
||||
AutoLayerManagerSetup setupLayerManager(this, ctx,
|
||||
BasicLayerManager::BUFFER_NONE);
|
||||
DispatchEvent(&event, status);
|
||||
|
|
Загрузка…
Ссылка в новой задаче