Bug 1304152 - Printing uses DrawTargetCairo. Don't blindly assume we have a DrawTargetSkia. r?mchang draft
authorMarkus Stange <mstange@themasta.com>
Tue, 25 Oct 2016 16:22:17 -0400
changeset 429402 0676f93a4ab275ecbed4c0d361a6a82a898eca4e
parent 429401 414f12dacadd682396cb2a80db8e0761baf711ac
child 429911 9d13ebf8927cf7a649ce4c343937498cfd0657d7
push id33555
push userbmo:mstange@themasta.com
push dateTue, 25 Oct 2016 20:22:41 +0000
reviewersmchang
bugs1304152
milestone52.0a1
Bug 1304152 - Printing uses DrawTargetCairo. Don't blindly assume we have a DrawTargetSkia. r?mchang MozReview-Commit-ID: 3JVDjawRLTM
gfx/thebes/gfxQuartzNativeDrawing.cpp
--- a/gfx/thebes/gfxQuartzNativeDrawing.cpp
+++ b/gfx/thebes/gfxQuartzNativeDrawing.cpp
@@ -19,17 +19,18 @@ gfxQuartzNativeDrawing::gfxQuartzNativeD
 }
 
 CGContextRef
 gfxQuartzNativeDrawing::BeginNativeDrawing()
 {
   NS_ASSERTION(!mCGContext, "BeginNativeDrawing called when drawing already in progress");
 
   DrawTarget *dt = mDrawTarget;
-  if (dt->IsDualDrawTarget() || dt->IsTiledDrawTarget()) {
+  if (dt->IsDualDrawTarget() || dt->IsTiledDrawTarget() ||
+      dt->GetBackendType() != BackendType::SKIA) {
     // We need a DrawTarget that we can get a CGContextRef from:
     Matrix transform = dt->GetTransform();
 
     mNativeRect = transform.TransformBounds(mNativeRect);
     mNativeRect.RoundOut();
     // Quartz theme drawing often adjusts drawing rects, so make
     // sure our surface is big enough for that.
     mNativeRect.Inflate(5);
@@ -44,16 +45,17 @@ gfxQuartzNativeDrawing::BeginNativeDrawi
 
     if (mTempDrawTarget) {
         transform.PostTranslate(-mNativeRect.x, -mNativeRect.y);
         mTempDrawTarget->SetTransform(transform);
     }
     dt = mTempDrawTarget;
   }
   if (dt) {
+    MOZ_ASSERT(dt->GetBackendType() == BackendType::SKIA);
     mCGContext = mBorrowedContext.Init(dt);
     MOZ_ASSERT(mCGContext);
   }
   return mCGContext;
 }
 
 void
 gfxQuartzNativeDrawing::EndNativeDrawing()