| Index: ppapi/shared_impl/scoped_pp_var.cc
|
| diff --git a/ppapi/shared_impl/scoped_pp_var.cc b/ppapi/shared_impl/scoped_pp_var.cc
|
| index f612aa1a2ac765dd0652b53b92c6d86b88b9d548..dc6a178a5ec688a57ddc88b5d9790b73e3f91dcc 100644
|
| --- a/ppapi/shared_impl/scoped_pp_var.cc
|
| +++ b/ppapi/shared_impl/scoped_pp_var.cc
|
| @@ -4,8 +4,10 @@
|
|
|
| #include "ppapi/shared_impl/scoped_pp_var.h"
|
|
|
| +#include "ppapi/c/dev/ppb_memory_dev.h"
|
| #include "ppapi/shared_impl/ppapi_globals.h"
|
| #include "ppapi/shared_impl/var_tracker.h"
|
| +#include "ppapi/thunk/thunk.h"
|
|
|
| namespace ppapi {
|
|
|
| @@ -46,4 +48,42 @@ PP_Var ScopedPPVar::Release() {
|
| return result;
|
| }
|
|
|
| +ScopedPPVarArray::ScopedPPVarArray(const PassPPBMemoryAllocatedRef&,
|
| + PP_Var* array,
|
| + size_t size)
|
| + : array_(array),
|
| + size_(size) {}
|
| +
|
| +ScopedPPVarArray::ScopedPPVarArray(size_t size)
|
| + : size_(size) {
|
| + if (size > 0) {
|
| + array_ = static_cast<PP_Var*>(
|
| + thunk::GetPPB_Memory_Dev_0_1_Thunk()->MemAlloc(sizeof(PP_Var) * size));
|
| + }
|
| + for (size_t i = 0; i < size_; ++i)
|
| + array_[i] = PP_MakeUndefined();
|
| +}
|
| +
|
| +ScopedPPVarArray::~ScopedPPVarArray() {
|
| + for (size_t i = 0; i < size_; ++i)
|
| + CallRelease(array_[i]);
|
| + if (size_ > 0)
|
| + thunk::GetPPB_Memory_Dev_0_1_Thunk()->MemFree(array_);
|
| +
|
| +}
|
| +
|
| +PP_Var* ScopedPPVarArray::Release(size_t* size) {
|
| + PP_Var* result = array_;
|
| + *size = size_;
|
| + array_ = NULL;
|
| + size_ = 0;
|
| + return result;
|
| +}
|
| +
|
| +void ScopedPPVarArray::Set(size_t index, PP_Var var) {
|
| + DCHECK(index < size_);
|
| + CallRelease(array_[index]);
|
| + array_[index] = var;
|
| +}
|
| +
|
| } // namespace ppapi
|
|
|