Bug 1260960 - Check skiaGL is enabled before calling skiaGLTex(), r?snorp
MozReview-Commit-ID: 8xaDtiPX563
--- a/dom/canvas/CanvasRenderingContext2D.cpp
+++ b/dom/canvas/CanvasRenderingContext2D.cpp
@@ -1176,17 +1176,17 @@ CanvasRenderingContext2D::Redraw(const g
nsSVGEffects::InvalidateDirectRenderingObservers(mCanvasElement);
mCanvasElement->InvalidateCanvasContent(&aR);
}
void
CanvasRenderingContext2D::DidRefresh()
{
- if (IsTargetValid() && SkiaGLTex()) {
+ if (IsTargetValid() && mIsSkiaGL) {
SkiaGLGlue* glue = gfxPlatform::GetPlatform()->GetSkiaGLGlue();
MOZ_ASSERT(glue);
auto gl = glue->GetGLContext();
gl->FlushIfHeavyGLCallsSinceLastFlush();
}
}
@@ -5661,30 +5661,29 @@ CanvasRenderingContext2D::GetCanvasLayer
if (!mResetLayer && aOldLayer) {
CanvasRenderingContext2DUserData* userData =
static_cast<CanvasRenderingContext2DUserData*>(
aOldLayer->GetUserData(&g2DContextLayerUserData));
CanvasLayer::Data data;
- GLuint skiaGLTex = SkiaGLTex();
- if (mIsSkiaGL && skiaGLTex) {
- SkiaGLGlue* glue = gfxPlatform::GetPlatform()->GetSkiaGLGlue();
- MOZ_ASSERT(glue);
-
- data.mGLContext = glue->GetGLContext();
- data.mFrontbufferGLTex = skiaGLTex;
- PersistentBufferProvider *provider = GetBufferProvider(aManager);
- data.mBufferProvider = provider;
- } else {
- PersistentBufferProvider *provider = GetBufferProvider(aManager);
- data.mBufferProvider = provider;
+ if (mIsSkiaGL) {
+ GLuint skiaGLTex = SkiaGLTex();
+ if (skiaGLTex) {
+ SkiaGLGlue* glue = gfxPlatform::GetPlatform()->GetSkiaGLGlue();
+ MOZ_ASSERT(glue);
+ data.mGLContext = glue->GetGLContext();
+ data.mFrontbufferGLTex = skiaGLTex;
+ }
}
+ PersistentBufferProvider *provider = GetBufferProvider(aManager);
+ data.mBufferProvider = provider;
+
if (userData &&
userData->IsForContext(this) &&
static_cast<CanvasLayer*>(aOldLayer)->IsDataValid(data)) {
RefPtr<Layer> ret = aOldLayer;
return ret.forget();
}
}
@@ -5715,29 +5714,29 @@ CanvasRenderingContext2D::GetCanvasLayer
CanvasLayer::Data data;
data.mSize = nsIntSize(mWidth, mHeight);
data.mHasAlpha = !mOpaque;
canvasLayer->SetPreTransactionCallback(
CanvasRenderingContext2DUserData::PreTransactionCallback, userData);
- GLuint skiaGLTex = SkiaGLTex();
- if (mIsSkiaGL && skiaGLTex) {
- SkiaGLGlue* glue = gfxPlatform::GetPlatform()->GetSkiaGLGlue();
- MOZ_ASSERT(glue);
-
- data.mGLContext = glue->GetGLContext();
- data.mFrontbufferGLTex = skiaGLTex;
- PersistentBufferProvider *provider = GetBufferProvider(aManager);
- data.mBufferProvider = provider;
- } else {
- PersistentBufferProvider *provider = GetBufferProvider(aManager);
- data.mBufferProvider = provider;
- }
+
+ if (mIsSkiaGL) {
+ GLuint skiaGLTex = SkiaGLTex();
+ if (skiaGLTex) {
+ SkiaGLGlue* glue = gfxPlatform::GetPlatform()->GetSkiaGLGlue();
+ MOZ_ASSERT(glue);
+ data.mGLContext = glue->GetGLContext();
+ data.mFrontbufferGLTex = skiaGLTex;
+ }
+ }
+
+ PersistentBufferProvider *provider = GetBufferProvider(aManager);
+ data.mBufferProvider = provider;
canvasLayer->Initialize(data);
uint32_t flags = mOpaque ? Layer::CONTENT_OPAQUE : 0;
canvasLayer->SetContentFlags(flags);
canvasLayer->Updated();
mResetLayer = false;