Bug 635464: Diagnostic crash in nightly and aurora, to see if we are asking basic content client for alpha. r?bas draft
authorMilan Sreckovic <milan@mozilla.com>
Wed, 20 Jul 2016 10:26:02 -0400
changeset 389998 f92e4b36001e7613d84d845651f2cf1924a62276
parent 389550 5a91e5b49be3c1ba401b057e90c92d7488e3647d
child 525912 5c2fd116891b4281393cb5fa8f660fd8a84a3621
push id23577
push usermsreckovic@mozilla.com
push dateWed, 20 Jul 2016 14:26:31 +0000
reviewersbas
bugs635464
milestone50.0a1
Bug 635464: Diagnostic crash in nightly and aurora, to see if we are asking basic content client for alpha. r?bas MozReview-Commit-ID: 2DBdJZs0hlh
gfx/2d/Logging.h
gfx/layers/client/ContentClient.cpp
--- a/gfx/2d/Logging.h
+++ b/gfx/2d/Logging.h
@@ -121,16 +121,17 @@ enum class LogReason : int {
   MessageChannelCloseFailure,
   MessageChannelInvalidHandle,
   TextureAliveAfterShutdown,
   InvalidContext,
   InvalidCommandList,
   AsyncTransactionTimeout, // 30
   TextureCreation,
   InvalidCacheSurface,
+  AlphaWithBasicClient,
   // End
   MustBeLessThanThis = 101,
 };
 
 struct BasicLogger
 {
   // For efficiency, this method exists and copies the logic of the
   // OutputMessage below.  If making any changes here, also make it
--- a/gfx/layers/client/ContentClient.cpp
+++ b/gfx/layers/client/ContentClient.cpp
@@ -122,16 +122,19 @@ ContentClientBasic::ContentClientBasic()
 void
 ContentClientBasic::CreateBuffer(ContentType aType,
                                  const IntRect& aRect,
                                  uint32_t aFlags,
                                  RefPtr<gfx::DrawTarget>* aBlackDT,
                                  RefPtr<gfx::DrawTarget>* aWhiteDT)
 {
   MOZ_ASSERT(!(aFlags & BUFFER_COMPONENT_ALPHA));
+  if (aFlags & BUFFER_COMPONENT_ALPHA) {
+    gfxDevCrash(LogReason::AlphaWithBasicClient) << "Asking basic content client for component alpha";
+  }
 
   *aBlackDT = gfxPlatform::GetPlatform()->CreateOffscreenContentDrawTarget(
     IntSize(aRect.width, aRect.height),
     gfxPlatform::GetPlatform()->Optimal2DFormatForContent(aType));
 }
 
 void
 ContentClientRemoteBuffer::DestroyBuffers()