| Index: ui/gfx/ozone/impl/file_surface_factory.cc
|
| diff --git a/ui/gfx/ozone/impl/file_surface_factory.cc b/ui/gfx/ozone/impl/file_surface_factory.cc
|
| index 7083376c5629088ebfb8a68a7c8911cc1bc145cc..c42be602da0e99e27c3ece03af2478deaa39cc8e 100644
|
| --- a/ui/gfx/ozone/impl/file_surface_factory.cc
|
| +++ b/ui/gfx/ozone/impl/file_surface_factory.cc
|
| @@ -12,8 +12,12 @@
|
| #include "third_party/skia/include/core/SkBitmapDevice.h"
|
| #include "third_party/skia/include/core/SkDevice.h"
|
| #include "ui/gfx/codec/png_codec.h"
|
| +#include "ui/gfx/ozone/surface_ozone_base.h"
|
| +#include "ui/gfx/skia_util.h"
|
| #include "ui/gfx/vsync_provider.h"
|
|
|
| +namespace gfx {
|
| +
|
| namespace {
|
|
|
| void WriteDataToFile(const base::FilePath& location,
|
| @@ -25,9 +29,42 @@ void WriteDataToFile(const base::FilePath& location,
|
| png_data.size());
|
| }
|
|
|
| -}
|
| +class FileSurface : public SurfaceOzoneBase {
|
| + public:
|
| + FileSurface(const base::FilePath& location) : location_(location) {}
|
| + virtual ~FileSurface() {}
|
|
|
| -namespace gfx {
|
| + bool InitializeCanvas() OVERRIDE { return true; }
|
| +
|
| + bool ResizeCanvas(const Size& viewport_size) OVERRIDE {
|
| + SkImageInfo info = SkImageInfo::MakeN32Premul(viewport_size.width(),
|
| + viewport_size.height());
|
| + device_ = skia::AdoptRef(SkBitmapDevice::Create(info));
|
| + canvas_ = skia::AdoptRef(new SkCanvas(device_.get()));
|
| + return true;
|
| + }
|
| +
|
| + skia::RefPtr<SkCanvas> GetCanvas() OVERRIDE { return canvas_; }
|
| +
|
| + bool PresentCanvas() OVERRIDE {
|
| + SkBitmap bitmap;
|
| + bitmap.setConfig(
|
| + SkBitmap::kARGB_8888_Config, device_->width(), device_->height());
|
| +
|
| + if (canvas_->readPixels(&bitmap, 0, 0)) {
|
| + base::WorkerPool::PostTask(
|
| + FROM_HERE, base::Bind(&WriteDataToFile, location_, bitmap), true);
|
| + }
|
| + return true;
|
| + }
|
| +
|
| + private:
|
| + base::FilePath location_;
|
| + skia::RefPtr<SkBitmapDevice> device_;
|
| + skia::RefPtr<SkCanvas> canvas_;
|
| +};
|
| +
|
| +} // namespace
|
|
|
| FileSurfaceFactory::FileSurfaceFactory(
|
| const base::FilePath& dump_location)
|
| @@ -51,9 +88,9 @@ AcceleratedWidget FileSurfaceFactory::GetAcceleratedWidget() {
|
| return 1;
|
| }
|
|
|
| -AcceleratedWidget FileSurfaceFactory::RealizeAcceleratedWidget(
|
| +scoped_ptr<SurfaceOzone> FileSurfaceFactory::CreateSurfaceForWidget(
|
| AcceleratedWidget widget) {
|
| - return 1;
|
| + return make_scoped_ptr<SurfaceOzone>(new FileSurface(location_));
|
| }
|
|
|
| bool FileSurfaceFactory::LoadEGLGLES2Bindings(
|
| @@ -62,37 +99,4 @@ bool FileSurfaceFactory::LoadEGLGLES2Bindings(
|
| return false;
|
| }
|
|
|
| -bool FileSurfaceFactory::AttemptToResizeAcceleratedWidget(
|
| - AcceleratedWidget widget,
|
| - const Rect& bounds) {
|
| - SkImageInfo info = SkImageInfo::MakeN32Premul(bounds.width(),
|
| - bounds.height());
|
| - device_ = skia::AdoptRef(SkBitmapDevice::Create(info));
|
| - canvas_ = skia::AdoptRef(new SkCanvas(device_.get()));
|
| - return true;
|
| -}
|
| -
|
| -bool FileSurfaceFactory::SchedulePageFlip(AcceleratedWidget widget) {
|
| - SkBitmap bitmap;
|
| - bitmap.setConfig(SkBitmap::kARGB_8888_Config,
|
| - device_->width(),
|
| - device_->height());
|
| -
|
| - if (canvas_->readPixels(&bitmap, 0, 0)) {
|
| - base::WorkerPool::PostTask(FROM_HERE,
|
| - base::Bind(&WriteDataToFile, location_, bitmap),
|
| - true);
|
| - }
|
| - return true;
|
| -}
|
| -
|
| -SkCanvas* FileSurfaceFactory::GetCanvasForWidget(AcceleratedWidget w) {
|
| - return canvas_.get();
|
| -}
|
| -
|
| -scoped_ptr<VSyncProvider> FileSurfaceFactory::CreateVSyncProvider(
|
| - AcceleratedWidget w) {
|
| - return scoped_ptr<VSyncProvider>();
|
| -}
|
| -
|
| } // namespace gfx
|
|
|