Index: ppapi/native_client/src/shared/ppapi_proxy/browser_ppb_graphics_3d_rpc_server.cc |
=================================================================== |
--- ppapi/native_client/src/shared/ppapi_proxy/browser_ppb_graphics_3d_rpc_server.cc (revision 113254) |
+++ ppapi/native_client/src/shared/ppapi_proxy/browser_ppb_graphics_3d_rpc_server.cc (working copy) |
@@ -244,26 +244,40 @@ |
NaClSrpcRpc* rpc, |
NaClSrpcClosure* done, |
PP_Resource resource_id, |
+ int32_t size, |
int32_t* success) { |
DebugPrintf("PPB_Graphics3DTrusted_InitCommandBuffer(...) resource_id: %d\n", |
resource_id); |
NaClSrpcClosureRunner runner(done); |
rpc->result = NACL_SRPC_RESULT_APP_ERROR; |
+ if ((size > kMaxAllowedBufferSize) || (size < 0)) |
+ return; |
*success = ppapi_proxy::PPBGraphics3DTrustedInterface()->InitCommandBuffer( |
- resource_id); |
+ resource_id, size); |
rpc->result = NACL_SRPC_RESULT_OK; |
} |
-void PpbGraphics3DRpcServer::PPB_Graphics3DTrusted_SetGetBuffer( |
+ |
+void PpbGraphics3DRpcServer::PPB_Graphics3DTrusted_GetRingBuffer( |
NaClSrpcRpc* rpc, |
NaClSrpcClosure* done, |
PP_Resource resource_id, |
- int32_t transfer_buffer_id) { |
- DebugPrintf("PPB_Graphics3DTrusted_SetGetBuffer\n"); |
+ NaClSrpcImcDescType* shm_desc, |
+ int32_t* shm_size) { |
+ DebugPrintf("PPB_Graphics3DTrusted_GetRingBuffer\n"); |
+ nacl::DescWrapperFactory factory; |
+ nacl::scoped_ptr<nacl::DescWrapper> desc_wrapper; |
NaClSrpcClosureRunner runner(done); |
rpc->result = NACL_SRPC_RESULT_APP_ERROR; |
- ppapi_proxy::PPBGraphics3DTrustedInterface()->SetGetBuffer( |
- resource_id, transfer_buffer_id); |
+ |
+ int native_handle = 0; |
+ uint32_t native_size = 0; |
+ ppapi_proxy::PPBGraphics3DTrustedInterface()->GetRingBuffer( |
+ resource_id, &native_handle, &native_size); |
+ desc_wrapper.reset(factory.ImportShmHandle( |
+ (NaClHandle)native_handle, native_size)); |
+ *shm_desc = desc_wrapper->desc(); |
+ *shm_size = native_size; |
rpc->result = NACL_SRPC_RESULT_OK; |
} |