summaryrefslogtreecommitdiffstats
path: root/ppapi/shared_impl/resource_tracker.h
Commit message (Collapse)AuthorAgeFilesLines
* Create ppapi_proxy.dll and ppapi_shared.dll.darin@chromium.org2011-08-261-1/+2
| | | | | | | | | | | | | | | | This involves introducing the following macros: PPAPI_PROXY_EXPORT - for symbols exported from ppapi/proxy PPAPI_SHARED_EXPORT - for symbols exported from ppapi/shared_impl PPAPI_THUNK_EXPORT - for symbols exported from ppapi/thunk NOTE: shared_impl and thunk are still linked together, but I thought it was cleaner to give thunk its own macro. R=brettw@chromium.org Review URL: http://codereview.chromium.org/7687005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@98508 0039d316-1c4b-4281-b951-d872f2087c98
* Remove webkit::ppapi::Resource.brettw@chromium.org2011-08-241-0/+5
| | | | | | | | | | | | | | | | | | | | | This makes all resource _impl's derive directly from ppapi::Resource so we can share code better. This means removing PluginInstances and converting them to PP_Instances. This adds a new ResourceHelper static class to help in the conversion of resources to PluginInstances for the _impl classes. Overall the new code is in general slightly worse than the old because using the ResourceHelper is more annoying than just calling instance() on the old webkit::ppapi::Resource object. However, I'm hoping that, because this will allow us to move more code into shared_impl and reduce duplicate logic, it will eventually have a net positive effect. This also adds a ScopedPPResource class that works just like a scoped_refptr. We need this in a few places. Most of the places that used the old ScopedResourceId class could be removed now since resources have PP_Resource IDs generated even when there's no plugin reference (this didn't use to be the case) so we can pass resources as input params to the plugin even when there's no plugin ref, as long as there's a scoped_refptr to the Resource. Review URL: http://codereview.chromium.org/7669055 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@98047 0039d316-1c4b-4281-b951-d872f2087c98
* Add a unified resource tracker shared between the proxy and the impl.brettw@chromium.org2011-08-181-0/+93
This renames the old ResourceObjectBase to Resource and removes the old PluginResource. It moves the resource tracker from the impl to the shared_impl, and makes the proxy use it. Some things become a little less neat because there's no proxy resource base class. In particular GetDispatcher() is now gone. I considered whether to add a helper base class that provides this function, but decided against it and had individual resource classes implement this when their implementation would find it useful. This is because ultimately I want more of this functionality to move into the shared_impl, and it's easier to do that if there are fewer proxy-specific things in the resources. This changes the way that plugins are added to the tracker. Previously they would only be in the tracker if the plugin had a reference to them, although they could be alive if the impl had a scoped_ptr referencing an object. This actually has the bug that if we then give the resource back to the plugin, it wouldn't be refcounted properly and everything would get confused. Now the tracker tracks all live resource objects whether or not the plugin has a ref. This works basically like the var tracker (it would be nice if the var and resource trackers shared more code, but that would further complicate this already overcomplicated patch). The resource tracker takes an extra ref whenever the plugin has one or more, and otherwise just tracks live resources. Review URL: http://codereview.chromium.org/7629017 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@97314 0039d316-1c4b-4281-b951-d872f2087c98