diff --git a/shell/common/rasterizer.cc b/shell/common/rasterizer.cc index 3560690e388..e2274c9a512 100644 --- a/shell/common/rasterizer.cc +++ b/shell/common/rasterizer.cc @@ -93,16 +93,16 @@ sk_sp Rasterizer::MakeRasterSnapshot(sk_sp picture, SkISize picture_size) { TRACE_EVENT0("flutter", __FUNCTION__); - if (!surface_->MakeRenderContextCurrent()) { - return nullptr; - } - sk_sp surface; if (surface_ == nullptr || surface_->GetContext() == nullptr) { // Raster surface is fine if there is no on screen surface. This might // happen in case of software rendering. surface = SkSurface::MakeRaster(SkImageInfo::MakeN32Premul(picture_size)); } else { + if (!surface_->MakeRenderContextCurrent()) { + return nullptr; + } + // When there is an on screen surface, we need a render target SkSurface // because we want to access texture backed images. surface = SkSurface::MakeRenderTarget(