commit 63d4e507c859 Author: Jonathan Watt Date: Thu Jan 18 12:45:18 2018 +0000 Bug 1435286 - Stop recording draw events for reference DrawTargets returned from PrintTarget. r=bobowen a=RyanVM MozReview-Commit-ID: 1cE71hBCGx5 --HG-- extra : source : 2ec583a00c078700add6a3615f6b6af12756695c --- gfx/src/nsDeviceContext.cpp | 9 ++++----- gfx/thebes/PrintTarget.cpp | 24 +----------------------- gfx/thebes/PrintTarget.h | 13 ++----------- gfx/thebes/PrintTargetCG.h | 2 +- gfx/thebes/PrintTargetCG.mm | 23 +---------------------- gfx/thebes/PrintTargetEMF.cpp | 4 ++-- gfx/thebes/PrintTargetEMF.h | 2 +- gfx/thebes/PrintTargetSkPDF.cpp | 23 +---------------------- gfx/thebes/PrintTargetSkPDF.h | 2 +- gfx/thebes/PrintTargetThebes.cpp | 23 +---------------------- gfx/thebes/PrintTargetThebes.h | 2 +- 11 files changed, 16 insertions(+), 111 deletions(-) diff --git gfx/src/nsDeviceContext.cpp gfx/src/nsDeviceContext.cpp index 913f46d272cc..ca5db861a303 100644 --- gfx/src/nsDeviceContext.cpp +++ gfx/src/nsDeviceContext.cpp @@ -382,14 +382,13 @@ nsDeviceContext::CreateRenderingContextCommon(bool aWantReferenceContext) MOZ_ASSERT(IsPrinterContext()); MOZ_ASSERT(mWidth > 0 && mHeight > 0); - // This will usually be null, depending on the pref print.print_via_parent. - RefPtr recorder; - mDeviceContextSpec->GetDrawEventRecorder(getter_AddRefs(recorder)); - RefPtr dt; if (aWantReferenceContext) { - dt = mPrintTarget->GetReferenceDrawTarget(recorder); + dt = mPrintTarget->GetReferenceDrawTarget(); } else { + // This will be null if e10s is disabled or print.print_via_parent=false. + RefPtr recorder; + mDeviceContextSpec->GetDrawEventRecorder(getter_AddRefs(recorder)); dt = mPrintTarget->MakeDrawTarget(gfx::IntSize(mWidth, mHeight), recorder); } diff --git gfx/thebes/PrintTarget.cpp gfx/thebes/PrintTarget.cpp index bb81158e5b77..c76a930221bf 100644 --- gfx/thebes/PrintTarget.cpp +++ gfx/thebes/PrintTarget.cpp @@ -25,7 +25,6 @@ PrintTarget::PrintTarget(cairo_surface_t* aCairoSurface, const IntSize& aSize) , mIsFinished(false) #ifdef DEBUG , mHasActivePage(false) - , mRecorder(nullptr) #endif { @@ -92,7 +91,7 @@ PrintTarget::MakeDrawTarget(const IntSize& aSize, } already_AddRefed -PrintTarget::GetReferenceDrawTarget(DrawEventRecorder* aRecorder) +PrintTarget::GetReferenceDrawTarget() { if (!mRefDT) { const IntSize size(1, 1); @@ -136,27 +135,6 @@ PrintTarget::GetReferenceDrawTarget(DrawEventRecorder* aRecorder) mRefDT = dt.forget(); } - if (aRecorder) { - if (!mRecordingRefDT) { - RefPtr dt = CreateWrapAndRecordDrawTarget(aRecorder, mRefDT); - if (!dt || !dt->IsValid()) { - return nullptr; - } - mRecordingRefDT = dt.forget(); -#ifdef DEBUG - mRecorder = aRecorder; -#endif - } -#ifdef DEBUG - else { - MOZ_ASSERT(aRecorder == mRecorder, - "Caching mRecordingRefDT assumes the aRecorder is an invariant"); - } -#endif - - return do_AddRef(mRecordingRefDT); - } - return do_AddRef(mRefDT); } diff --git gfx/thebes/PrintTarget.h gfx/thebes/PrintTarget.h index c5720c6cdb1f..818dc31fe0c4 100644 --- gfx/thebes/PrintTarget.h +++ gfx/thebes/PrintTarget.h @@ -130,10 +130,9 @@ public: /** * Returns a reference DrawTarget. Unlike MakeDrawTarget, this method is not * restricted to being called between BeginPage()/EndPage() calls, and the - * returned DrawTarget it is still valid to use after EndPage() has been - * called. + * returned DrawTarget is still valid to use after EndPage() has been called. */ - virtual already_AddRefed GetReferenceDrawTarget(DrawEventRecorder* aRecorder); + virtual already_AddRefed GetReferenceDrawTarget(); protected: @@ -150,18 +149,10 @@ protected: cairo_surface_t* mCairoSurface; RefPtr mRefDT; // reference DT - // Early on during printing we expect to be called without a recorder in - // order to gather metrics for reflow. However, in a content process, once - // we go on to paint we then expect to be called with a recorder. Hence why - // we have this separate recording reference DrawTarget (which wraps mRefDT). - RefPtr mRecordingRefDT; - IntSize mSize; bool mIsFinished; #ifdef DEBUG bool mHasActivePage; - // owned by mRecordingRefDT, so kept alive for our entire lifetime if set: - DrawEventRecorder* mRecorder; #endif }; diff --git gfx/thebes/PrintTargetCG.h gfx/thebes/PrintTargetCG.h index 8e0d2c505024..7808ebbd2a58 100644 --- gfx/thebes/PrintTargetCG.h +++ gfx/thebes/PrintTargetCG.h @@ -34,7 +34,7 @@ public: virtual nsresult EndPage() final; virtual already_AddRefed - GetReferenceDrawTarget(DrawEventRecorder* aRecorder) final; + GetReferenceDrawTarget() final; private: PrintTargetCG(PMPrintSession aPrintSession, diff --git gfx/thebes/PrintTargetCG.mm gfx/thebes/PrintTargetCG.mm index 7a7858f71456..93432711ed3d 100644 --- gfx/thebes/PrintTargetCG.mm +++ gfx/thebes/PrintTargetCG.mm @@ -65,7 +65,7 @@ PutBytesNull(void* info, const void* buffer, size_t count) } already_AddRefed -PrintTargetCG::GetReferenceDrawTarget(DrawEventRecorder* aRecorder) +PrintTargetCG::GetReferenceDrawTarget() { if (!mRefDT) { const IntSize size(1, 1); @@ -97,27 +97,6 @@ PrintTargetCG::GetReferenceDrawTarget(DrawEventRecorder* aRecorder) mRefDT = dt.forget(); } - if (aRecorder) { - if (!mRecordingRefDT) { - RefPtr dt = CreateWrapAndRecordDrawTarget(aRecorder, mRefDT); - if (!dt || !dt->IsValid()) { - return nullptr; - } - mRecordingRefDT = dt.forget(); -#ifdef DEBUG - mRecorder = aRecorder; -#endif - } -#ifdef DEBUG - else { - MOZ_ASSERT(aRecorder == mRecorder, - "Caching mRecordingRefDT assumes the aRecorder is an invariant"); - } -#endif - - return do_AddRef(mRecordingRefDT); - } - return do_AddRef(mRefDT); } diff --git gfx/thebes/PrintTargetSkPDF.cpp gfx/thebes/PrintTargetSkPDF.cpp index bdc6f9fec21f..e89afaea5d47 100644 --- gfx/thebes/PrintTargetSkPDF.cpp +++ gfx/thebes/PrintTargetSkPDF.cpp @@ -122,7 +122,7 @@ PrintTargetSkPDF::MakeDrawTarget(const IntSize& aSize, } already_AddRefed -PrintTargetSkPDF::GetReferenceDrawTarget(DrawEventRecorder* aRecorder) +PrintTargetSkPDF::GetReferenceDrawTarget() { if (!mRefDT) { SkDocument::PDFMetadata metadata; @@ -145,27 +145,6 @@ PrintTargetSkPDF::GetReferenceDrawTarget(DrawEventRecorder* aRecorder) mRefDT = dt.forget(); } - if (aRecorder) { - if (!mRecordingRefDT) { - RefPtr dt = CreateWrapAndRecordDrawTarget(aRecorder, mRefDT); - if (!dt || !dt->IsValid()) { - return nullptr; - } - mRecordingRefDT = dt.forget(); -#ifdef DEBUG - mRecorder = aRecorder; -#endif - } -#ifdef DEBUG - else { - MOZ_ASSERT(aRecorder == mRecorder, - "Caching mRecordingRefDT assumes the aRecorder is an invariant"); - } -#endif - - return do_AddRef(mRecordingRefDT); - } - return do_AddRef(mRefDT); } diff --git gfx/thebes/PrintTargetSkPDF.h gfx/thebes/PrintTargetSkPDF.h index fe5f28b31202..84ef2ff21ace 100644 --- gfx/thebes/PrintTargetSkPDF.h +++ gfx/thebes/PrintTargetSkPDF.h @@ -44,7 +44,7 @@ public: DrawEventRecorder* aRecorder = nullptr) final; virtual already_AddRefed - GetReferenceDrawTarget(DrawEventRecorder* aRecorder) override final; + GetReferenceDrawTarget() override final; private: PrintTargetSkPDF(const IntSize& aSize, diff --git gfx/thebes/PrintTargetThebes.cpp gfx/thebes/PrintTargetThebes.cpp index 3cb6d1e5d6b7..f12a7d5b3fb9 100644 --- gfx/thebes/PrintTargetThebes.cpp +++ gfx/thebes/PrintTargetThebes.cpp @@ -57,7 +57,7 @@ PrintTargetThebes::MakeDrawTarget(const IntSize& aSize, } already_AddRefed -PrintTargetThebes::GetReferenceDrawTarget(DrawEventRecorder* aRecorder) +PrintTargetThebes::GetReferenceDrawTarget() { if (!mRefDT) { RefPtr dt = @@ -68,27 +68,6 @@ PrintTargetThebes::GetReferenceDrawTarget(DrawEventRecorder* aRecorder) mRefDT = dt->CreateSimilarDrawTarget(IntSize(1,1), dt->GetFormat()); } - if (aRecorder) { - if (!mRecordingRefDT) { - RefPtr dt = CreateWrapAndRecordDrawTarget(aRecorder, mRefDT); - if (!dt || !dt->IsValid()) { - return nullptr; - } - mRecordingRefDT = dt.forget(); -#ifdef DEBUG - mRecorder = aRecorder; -#endif - } -#ifdef DEBUG - else { - MOZ_ASSERT(aRecorder == mRecorder, - "Caching mRecordingRefDT assumes the aRecorder is an invariant"); - } -#endif - - return do_AddRef(mRecordingRefDT); - } - return do_AddRef(mRefDT); } diff --git gfx/thebes/PrintTargetThebes.h gfx/thebes/PrintTargetThebes.h index 02f0e0ea51c3..94ffbc78fa6c 100644 --- gfx/thebes/PrintTargetThebes.h +++ gfx/thebes/PrintTargetThebes.h @@ -43,7 +43,7 @@ public: MakeDrawTarget(const IntSize& aSize, DrawEventRecorder* aRecorder = nullptr) override; - virtual already_AddRefed GetReferenceDrawTarget(DrawEventRecorder* aRecorder) final; + virtual already_AddRefed GetReferenceDrawTarget() final; private: