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 |