author | Jonathan Watt <jwatt@jwatt.org> |
Wed, 29 Oct 2014 17:07:11 +0000 | |
changeset 212992 | 683469687a86a592c0909cab22a8b1fd773f3f69 |
parent 212991 | 0259e2c45c3d7bb796e87b11f5eea261e11d09ea |
child 212993 | 18daec980bedf477d8d6ea1c560e3469f78ca15e |
push id | 27738 |
push user | cbook@mozilla.com |
push date | Thu, 30 Oct 2014 13:46:07 +0000 |
treeherder | mozilla-central@1aa1b23d799e [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | Bas |
bugs | 1090607 |
milestone | 36.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/layout/base/FrameLayerBuilder.cpp +++ b/layout/base/FrameLayerBuilder.cpp @@ -4221,42 +4221,38 @@ FrameLayerBuilder::GetPaintedLayerScaleF } } return PredictScaleForContent(aFrame, last, last->PresContext()->PresShell()->GetResolution()); } #ifdef MOZ_DUMP_PAINTING -static void DebugPaintItem(nsRenderingContext* aDest, +static void DebugPaintItem(DrawTarget& aDrawTarget, nsPresContext* aPresContext, nsDisplayItem *aItem, nsDisplayListBuilder* aBuilder) { bool snap; - nsRect appUnitBounds = aItem->GetBounds(aBuilder, &snap); - gfxRect bounds(appUnitBounds.x, appUnitBounds.y, appUnitBounds.width, appUnitBounds.height); - bounds.ScaleInverse(aPresContext->AppUnitsPerDevPixel()); + Rect bounds = NSRectToRect(aItem->GetBounds(aBuilder, &snap), + aPresContext->AppUnitsPerDevPixel()); RefPtr<DrawTarget> tempDT = - gfxPlatform::GetPlatform()->CreateOffscreenContentDrawTarget( - IntSize(bounds.width, bounds.height), - SurfaceFormat::B8G8R8A8); + aDrawTarget.CreateSimilarDrawTarget(IntSize(bounds.width, bounds.height), + SurfaceFormat::B8G8R8A8); nsRefPtr<gfxContext> context = new gfxContext(tempDT); - context->SetMatrix(gfxMatrix::Translation(-gfxPoint(bounds.x, bounds.y))); + context->SetMatrix(gfxMatrix::Translation(-bounds.x, -bounds.y)); nsRefPtr<nsRenderingContext> ctx = new nsRenderingContext(); ctx->Init(context); aItem->Paint(aBuilder, ctx); RefPtr<SourceSurface> surface = tempDT->Snapshot(); DumpPaintedImage(aItem, surface); - DrawTarget* drawTarget = aDest->ThebesContext()->GetDrawTarget(); - Rect rect = ToRect(bounds); - drawTarget->DrawSurface(surface, rect, Rect(Point(0,0), rect.Size())); + aDrawTarget.DrawSurface(surface, bounds, Rect(Point(0,0), bounds.Size())); aItem->SetPainted(); } #endif /* static */ void FrameLayerBuilder::RecomputeVisibilityForItems(nsTArray<ClippedDisplayItem>& aItems, nsDisplayListBuilder *aBuilder, @@ -4317,16 +4313,19 @@ FrameLayerBuilder::PaintItems(nsTArray<C gfxContext *aContext, nsRenderingContext *aRC, nsDisplayListBuilder* aBuilder, nsPresContext* aPresContext, const nsIntPoint& aOffset, float aXScale, float aYScale, int32_t aCommonClipCount) { +#ifdef MOZ_DUMP_PAINTING + DrawTarget& aDrawTarget = *aRC->GetDrawTarget(); +#endif int32_t appUnitsPerDevPixel = aPresContext->AppUnitsPerDevPixel(); nsRect boundRect = aRect.ToAppUnits(appUnitsPerDevPixel); boundRect.MoveBy(NSIntPixelsToAppUnits(aOffset.x, appUnitsPerDevPixel), NSIntPixelsToAppUnits(aOffset.y, appUnitsPerDevPixel)); boundRect.ScaleInverseRoundOut(aXScale, aYScale); DisplayItemClip currentClip; bool currentClipIsSetInContext = false; @@ -4373,17 +4372,17 @@ FrameLayerBuilder::PaintItems(nsTArray<C if (cdi->mInactiveLayerManager) { PaintInactiveLayer(aBuilder, cdi->mInactiveLayerManager, cdi->mItem, aContext, aRC); } else { nsIFrame* frame = cdi->mItem->Frame(); frame->AddStateBits(NS_FRAME_PAINTED_THEBES); #ifdef MOZ_DUMP_PAINTING if (gfxUtils::sDumpPainting) { - DebugPaintItem(aRC, aPresContext, cdi->mItem, aBuilder); + DebugPaintItem(aDrawTarget, aPresContext, cdi->mItem, aBuilder); } else { #else { #endif cdi->mItem->Paint(aBuilder, aRC); } }