| Index: content/renderer/browser_plugin/browser_plugin.cc
|
| diff --git a/content/renderer/browser_plugin/browser_plugin.cc b/content/renderer/browser_plugin/browser_plugin.cc
|
| index cd6b6b04d7e1759ca4c6fcde1a463b86a56219bb..6794780e5da05e6b9182b467f7374767d0633b34 100644
|
| --- a/content/renderer/browser_plugin/browser_plugin.cc
|
| +++ b/content/renderer/browser_plugin/browser_plugin.cc
|
| @@ -14,6 +14,7 @@
|
| #include "content/public/common/content_client.h"
|
| #include "content/public/renderer/content_renderer_client.h"
|
| #include "content/renderer/browser_plugin/browser_plugin_bindings.h"
|
| +#include "content/renderer/browser_plugin/browser_plugin_compositing_helper.h"
|
| #include "content/renderer/browser_plugin/browser_plugin_manager.h"
|
| #include "content/renderer/render_process_impl.h"
|
| #include "content/renderer/render_thread_impl.h"
|
| @@ -152,6 +153,7 @@ bool BrowserPlugin::OnMessageReceived(const IPC::Message& message) {
|
| bool handled = true;
|
| IPC_BEGIN_MESSAGE_MAP(BrowserPlugin, message)
|
| IPC_MESSAGE_HANDLER(BrowserPluginMsg_AdvanceFocus, OnAdvanceFocus)
|
| + IPC_MESSAGE_HANDLER(BrowserPluginMsg_BuffersSwapped, OnBuffersSwapped)
|
| IPC_MESSAGE_HANDLER(BrowserPluginMsg_GuestContentWindowReady,
|
| OnGuestContentWindowReady)
|
| IPC_MESSAGE_HANDLER(BrowserPluginMsg_GuestGone, OnGuestGone)
|
| @@ -318,6 +320,20 @@ void BrowserPlugin::OnAdvanceFocus(int instance_id, bool reverse) {
|
| render_view_->GetWebView()->advanceFocus(reverse);
|
| }
|
|
|
| +void BrowserPlugin::OnBuffersSwapped(int instance_id,
|
| + const gfx::Size& size,
|
| + std::string mailbox_name,
|
| + int gpu_route_id,
|
| + int gpu_host_id) {
|
| + DCHECK(instance_id == instance_id_);
|
| + EnableCompositing(true);
|
| +
|
| + compositing_helper_->OnBuffersSwapped(size,
|
| + mailbox_name,
|
| + gpu_route_id,
|
| + gpu_host_id);
|
| +}
|
| +
|
| void BrowserPlugin::OnGuestContentWindowReady(int instance_id,
|
| int content_window_routing_id) {
|
| DCHECK(content_window_routing_id != MSG_ROUTING_NONE);
|
| @@ -797,11 +813,16 @@ bool BrowserPlugin::initialize(WebPluginContainer* container) {
|
| }
|
|
|
| void BrowserPlugin::EnableCompositing(bool enable) {
|
| - if (enable) {
|
| - LOG(ERROR) << "BrowserPlugin compositing not yet implemented.";
|
| + if (compositing_enabled_ == enable)
|
| return;
|
| +
|
| + if (enable && !compositing_helper_) {
|
| + compositing_helper_.reset(new BrowserPluginCompositingHelper(
|
| + container_,
|
| + render_view_routing_id_));
|
| }
|
|
|
| + compositing_helper_->EnableCompositing(enable);
|
| compositing_enabled_ = enable;
|
| }
|
|
|
| @@ -809,6 +830,7 @@ void BrowserPlugin::destroy() {
|
| // The BrowserPlugin's WebPluginContainer is deleted immediately after this
|
| // call returns, so let's not keep a reference to it around.
|
| container_ = NULL;
|
| + compositing_helper_.reset();
|
| MessageLoop::current()->DeleteSoon(FROM_HERE, this);
|
| }
|
|
|
|
|