Index: ppapi/native_client/src/shared/ppapi_proxy/proxy_var_cache.cc |
diff --git a/ppapi/native_client/src/shared/ppapi_proxy/proxy_var_cache.cc b/ppapi/native_client/src/shared/ppapi_proxy/proxy_var_cache.cc |
index 636302cf21035750066f9bf1ddcb6ce74189be64..b1728695e6f4907ea8ddb4f0c89d8c63fac31bd7 100644 |
--- a/ppapi/native_client/src/shared/ppapi_proxy/proxy_var_cache.cc |
+++ b/ppapi/native_client/src/shared/ppapi_proxy/proxy_var_cache.cc |
@@ -16,6 +16,17 @@ namespace { |
pthread_mutex_t mu = PTHREAD_MUTEX_INITIALIZER; |
+// Convert the given SharedProxyVar to a PP_Var, incrementing the reference |
+// count by 1. |
+PP_Var GetPPVar(const SharedProxyVar& proxy_var) { |
+ PP_Var var; |
+ var.type = proxy_var->pp_var_type(); |
+ var.padding = 0; |
+ var.value.as_id = proxy_var->id(); |
+ proxy_var->AddRef(); |
+ return var; |
+} |
+ |
} // namespace |
ProxyVarCache* ProxyVarCache::cache_singleton = NULL; |
@@ -86,4 +97,15 @@ SharedProxyVar ProxyVarCache::SharedProxyVarForVar(PP_Var pp_var) const { |
return proxy_var; |
} |
+std::vector<PP_Var> ProxyVarCache::GetLiveVars() { |
+ std::vector<PP_Var> live_vars; |
+ pthread_mutex_lock(&mu); |
+ for (ProxyVarDictionary::const_iterator iter(proxy_var_cache_.begin()); |
+ iter != proxy_var_cache_.end(); |
+ ++iter) |
+ live_vars.push_back(GetPPVar(iter->second)); |
+ pthread_mutex_unlock(&mu); |
+ return live_vars; |
+} |
+ |
} // namespace ppapi_proxy |