diff --git a/gfx/2d/DrawTargetSkia.cpp b/gfx/2d/DrawTargetSkia.cpp index f95f4ed156dc..65590f5018da 100644 --- a/gfx/2d/DrawTargetSkia.cpp +++ b/gfx/2d/DrawTargetSkia.cpp @@ -4,6 +4,7 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "DrawTargetSkia.h" +#include "SourceSurfaceCairo.h" #include "SourceSurfaceSkia.h" #include "ScaledFontBase.h" #include "ScaledFontCairo.h" @@ -657,6 +658,16 @@ DrawTargetSkia::OptimizeSourceSurface(SourceSurface *aSurface) const TemporaryRef DrawTargetSkia::CreateSourceSurfaceFromNativeSurface(const NativeSurface &aSurface) const { + if (aSurface.mType == NativeSurfaceType::CAIRO_SURFACE) { + if (aSurface.mSize.width <= 0 || + aSurface.mSize.height <= 0) { + gfxWarning() << "Can't create a SourceSurface without a valid size"; + return nullptr; + } + cairo_surface_t* surf = static_cast(aSurface.mSurface); + return new SourceSurfaceCairo(surf, aSurface.mSize, aSurface.mFormat); + } + return nullptr; }