From c82b014311d37cc8c4ea0c54e41d1925fd7a3df4 Mon Sep 17 00:00:00 2001 From: "mgiuca@chromium.org" Date: Mon, 23 Sep 2013 15:09:21 +0000 Subject: [PPAPI] ResourceVar now reference counts its Resource in the plugin. ResourceVar is now an abstract base class with subclasses HostResourceVar and PluginResourceVar. The PluginResourceVar has a reference counted Resource instead of a PP_Resource. VarTracker has MakeResourceVar and MakeResourcePPVar methods, to abstract over the creation of a resource var of the correct subclass. Also, the creation_message is now NULL when empty, instead of being an empty message object. BUG=290713 Review URL: https://chromiumcodereview.appspot.com/23809016 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@224717 0039d316-1c4b-4281-b951-d872f2087c98 --- ppapi/proxy/plugin_var_tracker.cc | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'ppapi/proxy/plugin_var_tracker.cc') diff --git a/ppapi/proxy/plugin_var_tracker.cc b/ppapi/proxy/plugin_var_tracker.cc index ee29985..d2a4d74 100644 --- a/ppapi/proxy/plugin_var_tracker.cc +++ b/ppapi/proxy/plugin_var_tracker.cc @@ -10,10 +10,13 @@ #include "ppapi/c/ppb_var.h" #include "ppapi/proxy/plugin_array_buffer_var.h" #include "ppapi/proxy/plugin_dispatcher.h" +#include "ppapi/proxy/plugin_resource_var.h" #include "ppapi/proxy/ppapi_messages.h" #include "ppapi/proxy/proxy_object_var.h" #include "ppapi/shared_impl/api_id.h" +#include "ppapi/shared_impl/ppapi_globals.h" #include "ppapi/shared_impl/proxy_lock.h" +#include "ppapi/shared_impl/resource_tracker.h" #include "ppapi/shared_impl/var.h" namespace ppapi { @@ -151,6 +154,14 @@ void PluginVarTracker::ReleaseHostObject(PluginDispatcher* dispatcher, ReleaseVar(found->second); } +ResourceVar* PluginVarTracker::MakeResourceVar(PP_Resource pp_resource) { + ResourceTracker* resource_tracker = PpapiGlobals::Get()->GetResourceTracker(); + ppapi::Resource* resource = resource_tracker->GetResource(pp_resource); + if (!resource) + return NULL; + return new PluginResourceVar(resource); +} + void PluginVarTracker::DidDeleteInstance(PP_Instance instance) { // Calling the destructors on plugin objects may in turn release other // objects which will mutate the map out from under us. So do a two-step -- cgit v1.1