Index: ppapi/proxy/ppb_video_capture_proxy.cc |
=================================================================== |
--- ppapi/proxy/ppb_video_capture_proxy.cc (revision 100753) |
+++ ppapi/proxy/ppb_video_capture_proxy.cc (working copy) |
@@ -21,7 +21,6 @@ |
#include "ppapi/thunk/ppb_buffer_api.h" |
#include "ppapi/thunk/ppb_buffer_trusted_api.h" |
#include "ppapi/thunk/ppb_video_capture_api.h" |
-#include "ppapi/thunk/resource_creation_api.h" |
#include "ppapi/thunk/thunk.h" |
using ppapi::thunk::EnterResourceNoLock; |
@@ -34,10 +33,16 @@ |
namespace { |
-InterfaceProxy* CreatePPPVideoCaptureProxy(Dispatcher* dispatcher) { |
- return new PPP_VideoCapture_Proxy(dispatcher); |
+InterfaceProxy* CreatePPBVideoCaptureProxy(Dispatcher* dispatcher, |
+ const void* target_interface) { |
+ return new PPB_VideoCapture_Proxy(dispatcher, target_interface); |
} |
+InterfaceProxy* CreatePPPVideoCaptureProxy(Dispatcher* dispatcher, |
+ const void* target_interface) { |
+ return new PPP_VideoCapture_Proxy(dispatcher, target_interface); |
+} |
+ |
void OnDeviceInfo(PP_Instance instance, |
PP_Resource resource, |
const PP_VideoCaptureDeviceInfo_Dev* info, |
@@ -52,7 +57,7 @@ |
host_resource.SetHostResource(instance, resource); |
std::vector<PPPVideoCapture_Buffer> buffers(buffer_count); |
const PPB_Core* core = static_cast<const PPB_Core*>( |
- dispatcher->local_get_interface()(PPB_CORE_INTERFACE)); |
+ dispatcher->GetLocalInterface(PPB_CORE_INTERFACE)); |
DCHECK(core); |
for (uint32_t i = 0; i < buffer_count; ++i) { |
// We need to take a ref on the resource now. The browser may drop |
@@ -260,14 +265,27 @@ |
return this; |
} |
-PPB_VideoCapture_Proxy::PPB_VideoCapture_Proxy(Dispatcher* dispatcher) |
- : InterfaceProxy(dispatcher) { |
+PPB_VideoCapture_Proxy::PPB_VideoCapture_Proxy(Dispatcher* dispatcher, |
+ const void* target_interface) |
+ : InterfaceProxy(dispatcher, target_interface) { |
} |
PPB_VideoCapture_Proxy::~PPB_VideoCapture_Proxy() { |
} |
// static |
+const InterfaceProxy::Info* PPB_VideoCapture_Proxy::GetInfo() { |
+ static const Info info = { |
+ ppapi::thunk::GetPPB_VideoCapture_Thunk(), |
+ PPB_VIDEO_CAPTURE_DEV_INTERFACE, |
+ INTERFACE_ID_PPB_VIDEO_CAPTURE_DEV, |
+ false, |
+ &CreatePPBVideoCaptureProxy, |
+ }; |
+ return &info; |
+} |
+ |
+// static |
PP_Resource PPB_VideoCapture_Proxy::CreateProxyResource(PP_Instance instance) { |
PluginDispatcher* dispatcher = PluginDispatcher::GetForInstance(instance); |
if (!dispatcher) |
@@ -299,12 +317,11 @@ |
void PPB_VideoCapture_Proxy::OnMsgCreate(PP_Instance instance, |
HostResource* result_resource) { |
- thunk::EnterResourceCreation enter(instance); |
- if (enter.succeeded()) { |
- result_resource->SetHostResource( |
- instance, |
- enter.functions()->CreateVideoCapture(instance)); |
- } |
+ HostDispatcher* dispatcher = HostDispatcher::GetForInstance(instance); |
+ if (!dispatcher) |
+ return; |
+ PP_Resource resource = ppb_video_capture_target()->Create(instance); |
+ result_resource->SetHostResource(instance, resource); |
} |
void PPB_VideoCapture_Proxy::OnMsgStartCapture( |
@@ -329,13 +346,9 @@ |
enter.object()->StopCapture(); |
} |
-PPP_VideoCapture_Proxy::PPP_VideoCapture_Proxy(Dispatcher* dispatcher) |
- : InterfaceProxy(dispatcher), |
- ppp_video_capture_impl_(NULL) { |
- if (dispatcher->IsPlugin()) { |
- ppp_video_capture_impl_ = static_cast<const PPP_VideoCapture_Dev*>( |
- dispatcher->local_get_interface()(PPP_VIDEO_CAPTURE_DEV_INTERFACE)); |
- } |
+PPP_VideoCapture_Proxy::PPP_VideoCapture_Proxy(Dispatcher* dispatcher, |
+ const void* target_interface) |
+ : InterfaceProxy(dispatcher, target_interface) { |
} |
PPP_VideoCapture_Proxy::~PPP_VideoCapture_Proxy() { |
@@ -375,7 +388,7 @@ |
EnterPluginFromHostResource<PPB_VideoCapture_API> enter(host_resource); |
PluginResourceTracker* tracker = PluginResourceTracker::GetInstance(); |
PP_Resource resource = tracker->PluginResourceForHostResource(host_resource); |
- if (!resource || !ppp_video_capture_impl_ || enter.failed()) |
+ if (!resource || !ppp_video_capture_target() || enter.failed()) |
return; |
scoped_array<PP_Resource> resources(new PP_Resource[buffers.size()]); |
@@ -387,7 +400,7 @@ |
buffers[i].size); |
} |
static_cast<VideoCapture*>(enter.object())->SetBufferCount(buffers.size()); |
- ppp_video_capture_impl_->OnDeviceInfo( |
+ ppp_video_capture_target()->OnDeviceInfo( |
host_resource.instance(), |
resource, |
&info, |
@@ -402,12 +415,12 @@ |
EnterPluginFromHostResource<PPB_VideoCapture_API> enter(host_resource); |
PluginResourceTracker* tracker = PluginResourceTracker::GetInstance(); |
PP_Resource resource = tracker->PluginResourceForHostResource(host_resource); |
- if (!resource || !ppp_video_capture_impl_ || enter.failed()) |
+ if (!resource || !ppp_video_capture_target() || enter.failed()) |
return; |
if (!static_cast<VideoCapture*>(enter.object())->OnStatus(status)) |
return; |
- ppp_video_capture_impl_->OnStatus( |
+ ppp_video_capture_target()->OnStatus( |
host_resource.instance(), resource, status); |
} |
@@ -416,11 +429,11 @@ |
EnterPluginFromHostResource<PPB_VideoCapture_API> enter(host_resource); |
PluginResourceTracker* tracker = PluginResourceTracker::GetInstance(); |
PP_Resource resource = tracker->PluginResourceForHostResource(host_resource); |
- if (!resource || !ppp_video_capture_impl_ || enter.failed()) |
+ if (!resource || !ppp_video_capture_target() || enter.failed()) |
return; |
static_cast<VideoCapture*>(enter.object())->set_status( |
PP_VIDEO_CAPTURE_STATUS_STOPPED); |
- ppp_video_capture_impl_->OnError( |
+ ppp_video_capture_target()->OnError( |
host_resource.instance(), resource, error_code); |
} |
@@ -429,10 +442,10 @@ |
EnterPluginFromHostResource<PPB_VideoCapture_API> enter(host_resource); |
PluginResourceTracker* tracker = PluginResourceTracker::GetInstance(); |
PP_Resource resource = tracker->PluginResourceForHostResource(host_resource); |
- if (!resource || !ppp_video_capture_impl_ || enter.failed()) |
+ if (!resource || !ppp_video_capture_target() || enter.failed()) |
return; |
static_cast<VideoCapture*>(enter.object())->SetBufferInUse(buffer); |
- ppp_video_capture_impl_->OnBufferReady( |
+ ppp_video_capture_target()->OnBufferReady( |
host_resource.instance(), resource, buffer); |
} |