diff options
author | piman@google.com <piman@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-12 20:01:42 +0000 |
---|---|---|
committer | piman@google.com <piman@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-12 20:01:42 +0000 |
commit | 8c3bd1d8c71d8432beb624ce1434ca962665de90 (patch) | |
tree | 03cfc9842f7c75c1055895343d57b7ff709b90b8 /ppapi/proxy/ppp_graphics_3d_proxy.cc | |
parent | 2bc27608c7957eb03a98cd3b6929d6e6c068b478 (diff) | |
download | chromium_src-8c3bd1d8c71d8432beb624ce1434ca962665de90.zip chromium_src-8c3bd1d8c71d8432beb624ce1434ca962665de90.tar.gz chromium_src-8c3bd1d8c71d8432beb624ce1434ca962665de90.tar.bz2 |
Add proxy for PPP_Graphics_3D_Dev
BUG=none
TEST=run OOP Flash, kill the GPU process, check that Flash got the message.
Review URL: http://codereview.chromium.org/6823069
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@81294 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ppapi/proxy/ppp_graphics_3d_proxy.cc')
-rw-r--r-- | ppapi/proxy/ppp_graphics_3d_proxy.cc | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/ppapi/proxy/ppp_graphics_3d_proxy.cc b/ppapi/proxy/ppp_graphics_3d_proxy.cc new file mode 100644 index 0000000..ef31e92b --- /dev/null +++ b/ppapi/proxy/ppp_graphics_3d_proxy.cc @@ -0,0 +1,70 @@ +// Copyright (c) 2011 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 "ppapi/proxy/ppp_graphics_3d_proxy.h" + +#include "ppapi/c/dev/ppp_graphics_3d_dev.h" +#include "ppapi/proxy/host_dispatcher.h" +#include "ppapi/proxy/plugin_dispatcher.h" +#include "ppapi/proxy/ppapi_messages.h" + +namespace pp { +namespace proxy { + +namespace { + +void ContextLost(PP_Instance instance) { + HostDispatcher::GetForInstance(instance)->Send( + new PpapiMsg_PPPGraphics3D_ContextLost(INTERFACE_ID_PPP_GRAPHICS_3D_DEV, + instance)); +} + +static const PPP_Graphics3D_Dev graphics_3d_interface = { + &ContextLost +}; + +InterfaceProxy* CreateGraphics3DProxy(Dispatcher* dispatcher, + const void* target_interface) { + return new PPP_Graphics3D_Proxy(dispatcher, target_interface); +} + +} // namespace + +PPP_Graphics3D_Proxy::PPP_Graphics3D_Proxy(Dispatcher* dispatcher, + const void* target_interface) + : InterfaceProxy(dispatcher, target_interface) { +} + +PPP_Graphics3D_Proxy::~PPP_Graphics3D_Proxy() { +} + +// static +const InterfaceProxy::Info* PPP_Graphics3D_Proxy::GetInfo() { + static const Info info = { + &graphics_3d_interface, + PPP_GRAPHICS_3D_DEV_INTERFACE, + INTERFACE_ID_PPP_GRAPHICS_3D_DEV, + false, + &CreateGraphics3DProxy, + }; + return &info; +} + +bool PPP_Graphics3D_Proxy::OnMessageReceived(const IPC::Message& msg) { + bool handled = true; + IPC_BEGIN_MESSAGE_MAP(PPP_Graphics3D_Proxy, msg) + IPC_MESSAGE_HANDLER(PpapiMsg_PPPGraphics3D_ContextLost, + OnMsgContextLost) + IPC_MESSAGE_UNHANDLED(handled = false) + IPC_END_MESSAGE_MAP() + return handled; +} + +void PPP_Graphics3D_Proxy::OnMsgContextLost(PP_Instance instance) { + if (ppp_graphics_3d_target()) + ppp_graphics_3d_target()->Graphics3DContextLost(instance); +} + +} // namespace proxy +} // namespace pp |