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 a6f046c65d19815bcd390e66417a781b033823d7..4d5826aca0f7e28222884b5c54f584649c15cbed 100644 |
--- a/chrome/browser/tab_contents/thumbnail_generator.cc |
+++ b/chrome/browser/tab_contents/thumbnail_generator.cc |
@@ -191,14 +191,15 @@ void ThumbnailGenerator::AskForSnapshot(RenderWidgetHost* renderer, |
// We are going to render the thumbnail asynchronously now, so keep |
// this callback for later lookup when the rendering is done. |
static int sequence_num = 0; |
+ sequence_num++; |
TransportDIB* thumbnail_dib = TransportDIB::Create( |
- desired_size.width() * desired_size.height() * 4, sequence_num++); |
+ desired_size.width() * desired_size.height() * 4, sequence_num); |
+ |
linked_ptr<AsyncRequestInfo> request_info(new AsyncRequestInfo); |
request_info->callback.reset(callback); |
request_info->thumbnail_dib.reset(thumbnail_dib); |
request_info->renderer = renderer; |
- ThumbnailCallbackMap::value_type new_value(thumbnail_dib->handle(), |
- request_info); |
+ ThumbnailCallbackMap::value_type new_value(sequence_num, request_info); |
std::pair<ThumbnailCallbackMap::iterator, bool> result = |
callback_map_.insert(new_value); |
if (!result.second) { |
@@ -206,7 +207,8 @@ void ThumbnailGenerator::AskForSnapshot(RenderWidgetHost* renderer, |
return; |
} |
- renderer->PaintAtSize(thumbnail_dib->handle(), page_size, desired_size); |
+ renderer->PaintAtSize( |
+ thumbnail_dib->handle(), sequence_num, page_size, desired_size); |
} |
SkBitmap ThumbnailGenerator::GetThumbnailForRenderer( |
@@ -290,10 +292,10 @@ void ThumbnailGenerator::WidgetDidUpdateBackingStore(RenderWidgetHost* widget) { |
void ThumbnailGenerator::WidgetDidReceivePaintAtSizeAck( |
RenderWidgetHost* widget, |
- const TransportDIB::Handle& dib_handle, |
+ int sequence_num, |
const gfx::Size& size) { |
// Lookup the callback, run it, and erase it. |
- ThumbnailCallbackMap::iterator item = callback_map_.find(dib_handle); |
+ ThumbnailCallbackMap::iterator item = callback_map_.find(sequence_num); |
if (item != callback_map_.end()) { |
TransportDIB* dib = item->second->thumbnail_dib.get(); |
DCHECK(dib); |