Index: chrome/browser/renderer_host/render_widget_host.cc |
diff --git a/chrome/browser/renderer_host/render_widget_host.cc b/chrome/browser/renderer_host/render_widget_host.cc |
index a6efd58ae1847174aec14d0b9229276878560dfa..bf98b7dea0d499503403baa0f7e8b1fc9299b62c 100644 |
--- a/chrome/browser/renderer_host/render_widget_host.cc |
+++ b/chrome/browser/renderer_host/render_widget_host.cc |
@@ -763,6 +763,7 @@ void RenderWidgetHost::OnMsgPaintAtSizeAck(int tag, const gfx::Size& size) { |
void RenderWidgetHost::OnMsgUpdateRect( |
const ViewHostMsg_UpdateRect_Params& params) { |
+ TransportDIB::ScopedHandle dib_handle(params.dib_handle); |
TimeTicks paint_start = TimeTicks::Now(); |
if (paint_observer_.get()) |
@@ -797,7 +798,8 @@ void RenderWidgetHost::OnMsgUpdateRect( |
if (!is_gpu_rendering_active_) { |
const size_t size = params.bitmap_rect.height() * |
params.bitmap_rect.width() * 4; |
- TransportDIB* dib = process_->GetTransportDIB(params.bitmap); |
+ TransportDIB* dib = process_->GetTransportDIB(params.dib_id, |
+ dib_handle.release()); |
// If gpu process does painting, scroll_rect and copy_rects are always empty |
// and backing store is never used. |
@@ -816,8 +818,11 @@ void RenderWidgetHost::OnMsgUpdateRect( |
// Paint the backing store. This will update it with the |
// renderer-supplied bits. The view will read out of the backing store |
// later to actually draw to the screen. |
- PaintBackingStoreRect(params.bitmap, params.bitmap_rect, |
- params.copy_rects, params.view_size, |
+ PaintBackingStoreRect(params.dib_id, |
+ params.dib_handle, |
+ params.bitmap_rect, |
+ params.copy_rects, |
+ params.view_size, |
&painted_synchronously); |
} |
} |
@@ -881,9 +886,10 @@ void RenderWidgetHost::OnMsgCreateVideo(const gfx::Size& size) { |
Send(new ViewMsg_CreateVideo_ACK(routing_id_, -1)); |
} |
-void RenderWidgetHost::OnMsgUpdateVideo(TransportDIB::Id bitmap, |
+void RenderWidgetHost::OnMsgUpdateVideo(TransportDIB::Id dib_id, |
+ TransportDIB::Handle dib_handle, |
const gfx::Rect& bitmap_rect) { |
- PaintVideoLayer(bitmap, bitmap_rect); |
+ PaintVideoLayer(dib_id, dib_handle, bitmap_rect); |
// TODO(scherkus): support actual video ids! |
Send(new ViewMsg_UpdateVideo_ACK(routing_id_, -1)); |
@@ -1049,9 +1055,10 @@ void RenderWidgetHost::OnAcceleratedSurfaceSetTransportDIB( |
int32 width, |
int32 height, |
TransportDIB::Handle transport_dib) { |
+ TransportDIB::ScopedHandle scoped_dib_handle(transport_dib); |
if (view_) { |
view_->AcceleratedSurfaceSetTransportDIB(window, width, height, |
- transport_dib); |
+ scoped_dib_handle.release()); |
} |
} |
@@ -1085,7 +1092,8 @@ void RenderWidgetHost::OnMsgDestroyPluginContainer(gfx::PluginWindowHandle id) { |
#endif |
void RenderWidgetHost::PaintBackingStoreRect( |
- TransportDIB::Id bitmap, |
+ TransportDIB::Id dib_id, |
+ TransportDIB::Handle dib_handle, |
const gfx::Rect& bitmap_rect, |
const std::vector<gfx::Rect>& copy_rects, |
const gfx::Size& view_size, |
@@ -1107,8 +1115,13 @@ void RenderWidgetHost::PaintBackingStoreRect( |
} |
bool needs_full_paint = false; |
- BackingStoreManager::PrepareBackingStore(this, view_size, bitmap, bitmap_rect, |
- copy_rects, &needs_full_paint, |
+ BackingStoreManager::PrepareBackingStore(this, |
+ view_size, |
+ dib_id, |
+ dib_handle, |
+ bitmap_rect, |
+ copy_rects, |
+ &needs_full_paint, |
painted_synchronously); |
if (needs_full_paint) { |
repaint_start_time_ = TimeTicks::Now(); |
@@ -1137,12 +1150,13 @@ void RenderWidgetHost::ScrollBackingStoreRect(int dx, int dy, |
backing_store->ScrollBackingStore(dx, dy, clip_rect, view_size); |
} |
-void RenderWidgetHost::PaintVideoLayer(TransportDIB::Id bitmap, |
+void RenderWidgetHost::PaintVideoLayer(TransportDIB::Id dib_id, |
+ TransportDIB::Handle dib_handle, |
const gfx::Rect& bitmap_rect) { |
if (is_hidden_ || !video_layer_.get()) |
return; |
- video_layer_->CopyTransportDIB(process(), bitmap, bitmap_rect); |
+ video_layer_->CopyTransportDIB(process(), dib_id, dib_handle, bitmap_rect); |
// Don't update the view if we're hidden or if the view has been destroyed. |
if (is_hidden_ || !view_) |