Bug 1432411: Wallpaper over the case where there is no Screen. r?jgilbert
MozReview-Commit-ID: ISeBw7qxGdH
--- a/gfx/layers/client/CanvasClient.cpp
+++ b/gfx/layers/client/CanvasClient.cpp
@@ -400,33 +400,35 @@ CanvasClientSharedSurface::UpdateRendere
} else {
asyncRenderer = aRenderer.ref<AsyncCanvasRenderer*>();
gl = asyncRenderer->mGLContext;
}
gl->MakeCurrent();
RefPtr<TextureClient> newFront;
+ mShSurfClient = nullptr;
if (canvasRenderer && canvasRenderer->mGLFrontbuffer) {
mShSurfClient = CloneSurface(canvasRenderer->mGLFrontbuffer.get(), canvasRenderer->mFactory.get());
if (!mShSurfClient) {
gfxCriticalError() << "Invalid canvas front buffer";
return;
}
- } else {
+ } else if (gl->Screen()) {
mShSurfClient = gl->Screen()->Front();
if (mShSurfClient && mShSurfClient->GetAllocator() &&
mShSurfClient->GetAllocator() != GetForwarder()->GetTextureForwarder()) {
mShSurfClient = CloneSurface(mShSurfClient->Surf(), gl->Screen()->Factory());
}
- if (!mShSurfClient) {
- return;
- }
}
- MOZ_ASSERT(mShSurfClient);
+
+ if (!mShSurfClient) {
+ gfxCriticalError() << "Invalid canvas front buffer or screen";
+ return;
+ }
newFront = mShSurfClient;
SharedSurface* surf = mShSurfClient->Surf();
// Readback if needed.
mReadbackClient = nullptr;