aboutsummaryrefslogtreecommitdiff
path: root/www/waterfox/files/patch-bug1435286
diff options
context:
space:
mode:
authorJan Beich <jbeich@FreeBSD.org>2018-02-08 00:59:50 +0000
committerJan Beich <jbeich@FreeBSD.org>2018-02-08 00:59:50 +0000
commit451a0ca76b66769f9f81f5c358d224f7742d178b (patch)
treefe03cc61a38df79514724e2b44a157de0b446576 /www/waterfox/files/patch-bug1435286
parent8fc915616fd0ea3f496dcb289dbb3f1e94c721a9 (diff)
downloadports-451a0ca76b66769f9f81f5c358d224f7742d178b.tar.gz
ports-451a0ca76b66769f9f81f5c358d224f7742d178b.zip
MFH: r461193
www/waterfox: apply some FF57/FF59 fixes Approved by: ports-secteam blanket
Notes
Notes: svn path=/branches/2018Q1/; revision=461194
Diffstat (limited to 'www/waterfox/files/patch-bug1435286')
-rw-r--r--www/waterfox/files/patch-bug1435286294
1 files changed, 294 insertions, 0 deletions
diff --git a/www/waterfox/files/patch-bug1435286 b/www/waterfox/files/patch-bug1435286
new file mode 100644
index 000000000000..4aa4aa1f8aa3
--- /dev/null
+++ b/www/waterfox/files/patch-bug1435286
@@ -0,0 +1,294 @@
+commit 63d4e507c859
+Author: Jonathan Watt <jwatt@jwatt.org>
+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<DrawEventRecorder> recorder;
+- mDeviceContextSpec->GetDrawEventRecorder(getter_AddRefs(recorder));
+-
+ RefPtr<gfx::DrawTarget> 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<DrawEventRecorder> 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<DrawTarget>
+-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<DrawTarget> 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<DrawTarget> GetReferenceDrawTarget(DrawEventRecorder* aRecorder);
++ virtual already_AddRefed<DrawTarget> GetReferenceDrawTarget();
+
+ protected:
+
+@@ -150,18 +149,10 @@ protected:
+ cairo_surface_t* mCairoSurface;
+ RefPtr<DrawTarget> 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<DrawTarget> 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<DrawTarget>
+- 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<DrawTarget>
+-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<DrawTarget> 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<DrawTarget>
+-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<DrawTarget> 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<DrawTarget>
+- 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<DrawTarget>
+-PrintTargetThebes::GetReferenceDrawTarget(DrawEventRecorder* aRecorder)
++PrintTargetThebes::GetReferenceDrawTarget()
+ {
+ if (!mRefDT) {
+ RefPtr<gfx::DrawTarget> dt =
+@@ -68,27 +68,6 @@ PrintTargetThebes::GetReferenceDrawTarget(DrawEventRecorder* aRecorder)
+ mRefDT = dt->CreateSimilarDrawTarget(IntSize(1,1), dt->GetFormat());
+ }
+
+- if (aRecorder) {
+- if (!mRecordingRefDT) {
+- RefPtr<DrawTarget> 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<DrawTarget> GetReferenceDrawTarget(DrawEventRecorder* aRecorder) final;
++ virtual already_AddRefed<DrawTarget> GetReferenceDrawTarget() final;
+
+ private:
+