| Index: ui/ozone/platform/cast/surface_factory_cast.cc
|
| diff --git a/ui/ozone/platform/cast/surface_factory_cast.cc b/ui/ozone/platform/cast/surface_factory_cast.cc
|
| index 4d5c57e020ce644111d1fdb0e02fcb51b7c375a1..f92e1c9aac5fc9e2f61881e109ebf2ab6d6c6b51 100644
|
| --- a/ui/ozone/platform/cast/surface_factory_cast.cc
|
| +++ b/ui/ozone/platform/cast/surface_factory_cast.cc
|
| @@ -10,9 +10,12 @@
|
| #include "base/callback_helpers.h"
|
| #include "chromecast/public/cast_egl_platform.h"
|
| #include "chromecast/public/graphics_types.h"
|
| +#include "third_party/skia/include/core/SkSurface.h"
|
| #include "ui/gfx/geometry/quad_f.h"
|
| +#include "ui/gfx/vsync_provider.h"
|
| #include "ui/ozone/platform/cast/surface_ozone_egl_cast.h"
|
| #include "ui/ozone/public/native_pixmap.h"
|
| +#include "ui/ozone/public/surface_ozone_canvas.h"
|
|
|
| using chromecast::CastEglPlatform;
|
|
|
| @@ -37,8 +40,35 @@ gfx::Size GetMinDisplaySize() {
|
| return gfx::Size(1280, 720);
|
| }
|
|
|
| +class DummySurface : public SurfaceOzoneCanvas {
|
| + public:
|
| + DummySurface() {}
|
| + ~DummySurface() override {}
|
| +
|
| + // SurfaceOzoneCanvas implementation:
|
| + skia::RefPtr<SkSurface> GetSurface() override { return surface_; }
|
| +
|
| + void ResizeCanvas(const gfx::Size& viewport_size) override {
|
| + surface_ = skia::AdoptRef(SkSurface::NewRaster(SkImageInfo::MakeN32Premul(
|
| + viewport_size.width(), viewport_size.height())));
|
| + }
|
| +
|
| + void PresentCanvas(const gfx::Rect& damage) override {}
|
| +
|
| + scoped_ptr<gfx::VSyncProvider> CreateVSyncProvider() override {
|
| + return nullptr;
|
| + }
|
| +
|
| + private:
|
| + skia::RefPtr<SkSurface> surface_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(DummySurface);
|
| +};
|
| +
|
| } // namespace
|
|
|
| +SurfaceFactoryCast::SurfaceFactoryCast() : SurfaceFactoryCast(nullptr) {}
|
| +
|
| SurfaceFactoryCast::SurfaceFactoryCast(scoped_ptr<CastEglPlatform> egl_platform)
|
| : state_(kUninitialized),
|
| display_type_(0),
|
| @@ -97,6 +127,14 @@ void SurfaceFactoryCast::ShutdownHardware() {
|
| state_ = kUninitialized;
|
| }
|
|
|
| +scoped_ptr<SurfaceOzoneCanvas> SurfaceFactoryCast::CreateCanvasForWidget(
|
| + gfx::AcceleratedWidget widget) {
|
| + // Software canvas support only in headless mode
|
| + if (egl_platform_)
|
| + return nullptr;
|
| + return make_scoped_ptr<SurfaceOzoneCanvas>(new DummySurface());
|
| +}
|
| +
|
| intptr_t SurfaceFactoryCast::GetNativeDisplay() {
|
| CreateDisplayTypeAndWindowIfNeeded();
|
| return reinterpret_cast<intptr_t>(display_type_);
|
| @@ -177,7 +215,7 @@ const int32* SurfaceFactoryCast::GetEGLSurfaceProperties(
|
| }
|
|
|
| scoped_refptr<NativePixmap> SurfaceFactoryCast::CreateNativePixmap(
|
| - gfx::AcceleratedWidget w,
|
| + gfx::AcceleratedWidget widget,
|
| gfx::Size size,
|
| gfx::BufferFormat format,
|
| gfx::BufferUsage usage) {
|
|
|