| Index: chrome/browser/renderer_host/backing_store_proxy.cc
|
| ===================================================================
|
| --- chrome/browser/renderer_host/backing_store_proxy.cc (revision 65168)
|
| +++ chrome/browser/renderer_host/backing_store_proxy.cc (working copy)
|
| @@ -1,101 +0,0 @@
|
| -// Copyright (c) 2010 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "chrome/browser/renderer_host/backing_store_proxy.h"
|
| -
|
| -#include "build/build_config.h"
|
| -#include "chrome/browser/gpu_process_host_ui_shim.h"
|
| -#include "chrome/browser/renderer_host/render_process_host.h"
|
| -#include "chrome/browser/renderer_host/render_widget_host.h"
|
| -#include "chrome/common/gpu_messages.h"
|
| -#include "chrome/common/render_messages.h"
|
| -#include "gfx/rect.h"
|
| -
|
| -#if defined(OS_WIN)
|
| -#include <windows.h>
|
| -#endif
|
| -
|
| -BackingStoreProxy::BackingStoreProxy(RenderWidgetHost* widget,
|
| - const gfx::Size& size,
|
| - GpuProcessHostUIShim* process_shim,
|
| - int32 routing_id)
|
| - : BackingStore(widget, size),
|
| - process_shim_(process_shim),
|
| - routing_id_(routing_id),
|
| - waiting_for_paint_ack_(false) {
|
| - process_shim_->AddRoute(routing_id_, this);
|
| -}
|
| -
|
| -BackingStoreProxy::~BackingStoreProxy() {
|
| - process_shim_->RemoveRoute(routing_id_);
|
| -}
|
| -
|
| -void BackingStoreProxy::PaintToBackingStore(
|
| - RenderProcessHost* process,
|
| - TransportDIB::Id bitmap,
|
| - const gfx::Rect& bitmap_rect,
|
| - const std::vector<gfx::Rect>& copy_rects,
|
| - bool* painted_synchronously) {
|
| - DCHECK(!waiting_for_paint_ack_);
|
| -
|
| - base::ProcessId process_id;
|
| -#if defined(OS_WIN)
|
| - process_id = ::GetProcessId(process->GetHandle());
|
| -#elif defined(OS_POSIX)
|
| - process_id = process->GetHandle();
|
| -#endif
|
| -
|
| - if (process_shim_->Send(new GpuMsg_PaintToBackingStore(
|
| - routing_id_, process_id, bitmap, bitmap_rect, copy_rects))) {
|
| - // Message sent successfully, so the caller can not destroy the
|
| - // TransportDIB. OnDonePaintingToBackingStore will free it later.
|
| - *painted_synchronously = false;
|
| - waiting_for_paint_ack_ = true;
|
| - } else {
|
| - // On error, we're done with the TransportDIB and the caller can free it.
|
| - *painted_synchronously = true;
|
| - }
|
| -}
|
| -
|
| -bool BackingStoreProxy::CopyFromBackingStore(const gfx::Rect& rect,
|
| - skia::PlatformCanvas* output) {
|
| - NOTIMPLEMENTED();
|
| - return false;
|
| -}
|
| -
|
| -void BackingStoreProxy::ScrollBackingStore(int dx, int dy,
|
| - const gfx::Rect& clip_rect,
|
| - const gfx::Size& view_size) {
|
| - process_shim_->Send(new GpuMsg_ScrollBackingStore(routing_id_, dx, dy,
|
| - clip_rect, view_size));
|
| -}
|
| -
|
| -void BackingStoreProxy::OnMessageReceived(const IPC::Message& msg) {
|
| - IPC_BEGIN_MESSAGE_MAP(BackingStoreProxy, msg)
|
| - IPC_MESSAGE_HANDLER(GpuHostMsg_PaintToBackingStore_ACK,
|
| - OnPaintToBackingStoreACK)
|
| - IPC_END_MESSAGE_MAP_EX()
|
| -}
|
| -
|
| -void BackingStoreProxy::OnChannelConnected(int32 peer_pid) {
|
| -}
|
| -
|
| -void BackingStoreProxy::OnChannelError() {
|
| - if (waiting_for_paint_ack_) {
|
| - // If the GPU process dies while painting, the renderer will be waiting for
|
| - // the paint ACK before painting any more. Since no ack is coming, we
|
| - // manually declare that we're done with the transport DIB here so it can
|
| - // continue.
|
| - OnPaintToBackingStoreACK();
|
| - }
|
| -
|
| - // TODO(brettw): does this mean we aren't getting any more messages and we
|
| - // should delete outselves?
|
| -}
|
| -
|
| -void BackingStoreProxy::OnPaintToBackingStoreACK() {
|
| - DCHECK(waiting_for_paint_ack_);
|
| - render_widget_host()->DonePaintingToBackingStore();
|
| - waiting_for_paint_ack_ = false;
|
| -}
|
|
|