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 |