| Index: ppapi/proxy/raw_var_data.cc
|
| diff --git a/ppapi/proxy/raw_var_data.cc b/ppapi/proxy/raw_var_data.cc
|
| index 1c91556f7d59b9c15b8aa317dff4b765fa1efa99..d4ad2799010d650cb1d3100cd8f757e02d82063d 100644
|
| --- a/ppapi/proxy/raw_var_data.cc
|
| +++ b/ppapi/proxy/raw_var_data.cc
|
| @@ -28,6 +28,8 @@ namespace {
|
| // memory instead of sending the data over IPC. Light testing suggests
|
| // shared memory is much faster for 256K and larger messages.
|
| static const uint32 kMinimumArrayBufferSizeForShmem = 256 * 1024;
|
| +static uint32 g_minimum_array_buffer_size_for_shmem =
|
| + kMinimumArrayBufferSizeForShmem;
|
|
|
| void DefaultHandleWriter(IPC::Message* m, const SerializedHandle& handle) {
|
| IPC::ParamTraits<SerializedHandle>::Write(m, handle);
|
| @@ -174,6 +176,25 @@ scoped_ptr<RawVarDataGraph> RawVarDataGraph::Read(const IPC::Message* m,
|
| return result.Pass();
|
| }
|
|
|
| +std::vector<SerializedHandle*> RawVarDataGraph::GetHandles() {
|
| + std::vector<SerializedHandle*> result;
|
| + for (size_t i = 0; i < data_.size(); ++i) {
|
| + SerializedHandle* handle = data_[i]->GetHandle();
|
| + if (handle)
|
| + result.push_back(handle);
|
| + }
|
| + return result;
|
| +}
|
| +
|
| +// static
|
| +void RawVarDataGraph::SetMinimumArrayBufferSizeForShmemForTest(
|
| + uint32 threshold) {
|
| + if (threshold == 0)
|
| + g_minimum_array_buffer_size_for_shmem = kMinimumArrayBufferSizeForShmem;
|
| + else
|
| + g_minimum_array_buffer_size_for_shmem = threshold;
|
| +}
|
| +
|
| // RawVarData ------------------------------------------------------------------
|
|
|
| // static
|
| @@ -205,6 +226,10 @@ RawVarData::RawVarData() : initialized_(false) {
|
| RawVarData::~RawVarData() {
|
| }
|
|
|
| +SerializedHandle* RawVarData::GetHandle() {
|
| + return NULL;
|
| +}
|
| +
|
| // BasicRawVarData -------------------------------------------------------------
|
| BasicRawVarData::BasicRawVarData() {
|
| }
|
| @@ -355,7 +380,7 @@ bool ArrayBufferRawVarData::Init(const PP_Var& var,
|
| if (!buffer_var)
|
| return false;
|
| bool using_shmem = false;
|
| - if (buffer_var->ByteLength() >= kMinimumArrayBufferSizeForShmem &&
|
| + if (buffer_var->ByteLength() >= g_minimum_array_buffer_size_for_shmem &&
|
| instance != 0) {
|
| int host_handle_id;
|
| base::SharedMemoryHandle plugin_handle;
|
| @@ -363,7 +388,7 @@ bool ArrayBufferRawVarData::Init(const PP_Var& var,
|
| &host_handle_id,
|
| &plugin_handle);
|
| if (using_shmem) {
|
| - if (host_shm_handle_id_ != -1) {
|
| + if (host_handle_id != -1) {
|
| DCHECK(!base::SharedMemory::IsHandleValid(plugin_handle));
|
| DCHECK(PpapiGlobals::Get()->IsPluginGlobals());
|
| type_ = ARRAY_BUFFER_SHMEM_HOST;
|
| @@ -476,6 +501,12 @@ bool ArrayBufferRawVarData::Read(PP_VarType type,
|
| return true;
|
| }
|
|
|
| +SerializedHandle* ArrayBufferRawVarData::GetHandle() {
|
| + if (type_ == ARRAY_BUFFER_SHMEM_PLUGIN && plugin_shm_handle_.size() != 0)
|
| + return &plugin_shm_handle_;
|
| + return NULL;
|
| +}
|
| +
|
| // ArrayRawVarData -------------------------------------------------------------
|
| ArrayRawVarData::ArrayRawVarData() {
|
| }
|
|
|