Index: ui/gfx/compositor/compositor_cc.cc |
diff --git a/ui/gfx/compositor/compositor_cc.cc b/ui/gfx/compositor/compositor_cc.cc |
index 6649f38c2fe15f7dab7a1a10178ede0c3f224a4e..ba8cd3875cae7f27a00490a9fc0b82a41e7036b1 100644 |
--- a/ui/gfx/compositor/compositor_cc.cc |
+++ b/ui/gfx/compositor/compositor_cc.cc |
@@ -4,6 +4,8 @@ |
#include "ui/gfx/compositor/compositor_cc.h" |
+#include "third_party/skia/include/images/SkImageEncoder.h" |
+#include "third_party/skia/include/core/SkBitmap.h" |
#include "third_party/WebKit/Source/WebKit/chromium/public/WebCompositor.h" |
#include "third_party/WebKit/Source/WebKit/chromium/public/WebFloatPoint.h" |
#include "third_party/WebKit/Source/WebKit/chromium/public/WebSize.h" |
@@ -174,8 +176,17 @@ void CompositorCC::DrawTree() { |
host_.composite(); |
} |
-void CompositorCC::ReadPixels(SkBitmap* bitmap) { |
- NOTIMPLEMENTED(); |
+bool CompositorCC::ReadPixels(SkBitmap* bitmap) { |
+ bitmap->setConfig(SkBitmap::kARGB_8888_Config, |
+ size().width(), size().height()); |
+ bitmap->allocPixels(); |
+ SkAutoLockPixels lock_image(*bitmap); |
+ unsigned char* pixels = static_cast<unsigned char*>(bitmap->getPixels()); |
+ if (host_.compositeAndReadback(pixels)) { |
+ SwizzleRGBAToBGRAAndFlip(pixels, size()); |
+ return true; |
+ } |
+ return false; |
} |
void CompositorCC::animateAndLayout(double frameBeginTime) { |