Index: chrome/browser/tab_contents/thumbnail_generator.cc |
diff --git a/chrome/browser/tab_contents/thumbnail_generator.cc b/chrome/browser/tab_contents/thumbnail_generator.cc |
index 76c63c8a7e084761aa30b5568db1f5713c247fa1..8623a6838500fbf8213d4a72f5d7945606871241 100644 |
--- a/chrome/browser/tab_contents/thumbnail_generator.cc |
+++ b/chrome/browser/tab_contents/thumbnail_generator.cc |
@@ -70,14 +70,24 @@ SkBitmap GetBitmapForRenderWidgetHost( |
ThumbnailGenerator::ClipResult* clip_result) { |
base::TimeTicks begin_compute_thumbnail = base::TimeTicks::Now(); |
- SkBitmap result; |
+ bool is_accelerated_compositing_active = false; |
+ content::RenderWidgetHostView* view = render_widget_host->view(); |
+ if (view) { |
+ RenderWidgetHostImpl* rwhi = RenderWidgetHostImpl::FromRWHV(view); |
+ is_accelerated_compositing_active = |
+ rwhi->is_accelerated_compositing_active(); |
+ } |
// Get the bitmap as a Skia object so we can resample it. This is a large |
// allocation and we can tolerate failure here, so give up if the allocation |
// fails. |
skia::PlatformCanvas temp_canvas; |
- if (!render_widget_host->CopyFromBackingStore(&temp_canvas)) |
- return result; |
+ const bool copy_result = is_accelerated_compositing_active ? |
+ render_widget_host->CopyFromCompositingSurface(&temp_canvas) : |
+ render_widget_host->CopyFromBackingStore(&temp_canvas); |
+ if (!copy_result) |
+ return SkBitmap(); |
+ |
const SkBitmap& bmp_with_scrollbars = |
skia::GetTopDevice(temp_canvas)->accessBitmap(false); |
// Clip the edgemost 15 pixels as that will commonly hold a scrollbar, which |
@@ -89,6 +99,7 @@ SkBitmap GetBitmapForRenderWidgetHost( |
SkBitmap bmp; |
bmp_with_scrollbars.extractSubset(&bmp, scrollbarless_rect); |
+ SkBitmap result; |
// Check if a clipped thumbnail is requested. |
if (options & ThumbnailGenerator::kClippedThumbnail) { |
SkBitmap clipped_bitmap = ThumbnailGenerator::GetClippedBitmap( |