| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "ppapi/shared_impl/var_tracker.h" | 5 #include "ppapi/shared_impl/var_tracker.h" |
| 6 | 6 |
| 7 #include <string.h> | 7 #include <string.h> |
| 8 | 8 |
| 9 #include <limits> | 9 #include <limits> |
| 10 | 10 |
| (...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 192 | 192 |
| 193 VarTracker::VarMap::const_iterator VarTracker::GetLiveVar( | 193 VarTracker::VarMap::const_iterator VarTracker::GetLiveVar( |
| 194 const PP_Var& var) const { | 194 const PP_Var& var) const { |
| 195 return live_vars_.find(static_cast<int32>(var.value.as_id)); | 195 return live_vars_.find(static_cast<int32>(var.value.as_id)); |
| 196 } | 196 } |
| 197 | 197 |
| 198 PP_Var VarTracker::MakeArrayBufferPPVar(uint32 size_in_bytes) { | 198 PP_Var VarTracker::MakeArrayBufferPPVar(uint32 size_in_bytes) { |
| 199 CheckThreadingPreconditions(); | 199 CheckThreadingPreconditions(); |
| 200 | 200 |
| 201 scoped_refptr<ArrayBufferVar> array_buffer(CreateArrayBuffer(size_in_bytes)); | 201 scoped_refptr<ArrayBufferVar> array_buffer(CreateArrayBuffer(size_in_bytes)); |
| 202 if (!array_buffer) | 202 if (!array_buffer.get()) |
| 203 return PP_MakeNull(); | 203 return PP_MakeNull(); |
| 204 return array_buffer->GetPPVar(); | 204 return array_buffer->GetPPVar(); |
| 205 } | 205 } |
| 206 | 206 |
| 207 PP_Var VarTracker::MakeArrayBufferPPVar(uint32 size_in_bytes, | 207 PP_Var VarTracker::MakeArrayBufferPPVar(uint32 size_in_bytes, |
| 208 const void* data) { | 208 const void* data) { |
| 209 CheckThreadingPreconditions(); | 209 CheckThreadingPreconditions(); |
| 210 | 210 |
| 211 ArrayBufferVar* array_buffer = MakeArrayBufferVar(size_in_bytes, data); | 211 ArrayBufferVar* array_buffer = MakeArrayBufferVar(size_in_bytes, data); |
| 212 return array_buffer ? array_buffer->GetPPVar() : PP_MakeNull(); | 212 return array_buffer ? array_buffer->GetPPVar() : PP_MakeNull(); |
| 213 } | 213 } |
| 214 | 214 |
| 215 ArrayBufferVar* VarTracker::MakeArrayBufferVar(uint32 size_in_bytes, | 215 ArrayBufferVar* VarTracker::MakeArrayBufferVar(uint32 size_in_bytes, |
| 216 const void* data) { | 216 const void* data) { |
| 217 CheckThreadingPreconditions(); | 217 CheckThreadingPreconditions(); |
| 218 | 218 |
| 219 ArrayBufferVar* array_buffer(CreateArrayBuffer(size_in_bytes)); | 219 ArrayBufferVar* array_buffer(CreateArrayBuffer(size_in_bytes)); |
| 220 if (!array_buffer) | 220 if (!array_buffer) |
| 221 return NULL; | 221 return NULL; |
| 222 memcpy(array_buffer->Map(), data, size_in_bytes); | 222 memcpy(array_buffer->Map(), data, size_in_bytes); |
| 223 return array_buffer; | 223 return array_buffer; |
| 224 } | 224 } |
| 225 | 225 |
| 226 PP_Var VarTracker::MakeArrayBufferPPVar(uint32 size_in_bytes, | 226 PP_Var VarTracker::MakeArrayBufferPPVar(uint32 size_in_bytes, |
| 227 base::SharedMemoryHandle handle) { | 227 base::SharedMemoryHandle handle) { |
| 228 CheckThreadingPreconditions(); | 228 CheckThreadingPreconditions(); |
| 229 | 229 |
| 230 scoped_refptr<ArrayBufferVar> array_buffer( | 230 scoped_refptr<ArrayBufferVar> array_buffer( |
| 231 CreateShmArrayBuffer(size_in_bytes, handle)); | 231 CreateShmArrayBuffer(size_in_bytes, handle)); |
| 232 if (!array_buffer) | 232 if (!array_buffer.get()) |
| 233 return PP_MakeNull(); | 233 return PP_MakeNull(); |
| 234 return array_buffer->GetPPVar(); | 234 return array_buffer->GetPPVar(); |
| 235 } | 235 } |
| 236 | 236 |
| 237 std::vector<PP_Var> VarTracker::GetLiveVars() { | 237 std::vector<PP_Var> VarTracker::GetLiveVars() { |
| 238 CheckThreadingPreconditions(); | 238 CheckThreadingPreconditions(); |
| 239 | 239 |
| 240 std::vector<PP_Var> var_vector; | 240 std::vector<PP_Var> var_vector; |
| 241 var_vector.reserve(live_vars_.size()); | 241 var_vector.reserve(live_vars_.size()); |
| 242 for (VarMap::const_iterator iter = live_vars_.begin(); | 242 for (VarMap::const_iterator iter = live_vars_.begin(); |
| (...skipping 16 matching lines...) Expand all Loading... |
| 259 bool VarTracker::DeleteObjectInfoIfNecessary(VarMap::iterator iter) { | 259 bool VarTracker::DeleteObjectInfoIfNecessary(VarMap::iterator iter) { |
| 260 if (iter->second.ref_count != 0 || | 260 if (iter->second.ref_count != 0 || |
| 261 iter->second.track_with_no_reference_count != 0) | 261 iter->second.track_with_no_reference_count != 0) |
| 262 return false; // Object still alive. | 262 return false; // Object still alive. |
| 263 iter->second.var->ResetVarID(); | 263 iter->second.var->ResetVarID(); |
| 264 live_vars_.erase(iter); | 264 live_vars_.erase(iter); |
| 265 return true; | 265 return true; |
| 266 } | 266 } |
| 267 | 267 |
| 268 } // namespace ppapi | 268 } // namespace ppapi |
| OLD | NEW |