| Index: cc/resources/resource_provider.h
|
| diff --git a/cc/resources/resource_provider.h b/cc/resources/resource_provider.h
|
| index e73ea15589a1f190afdde90c2f5cd645558c8ae3..0a70b02f8555077804950cd8a063dc1b362effdf 100644
|
| --- a/cc/resources/resource_provider.h
|
| +++ b/cc/resources/resource_provider.h
|
| @@ -8,6 +8,7 @@
|
| #include <deque>
|
| #include <set>
|
| #include <string>
|
| +#include <utility>
|
| #include <vector>
|
|
|
| #include "base/basictypes.h"
|
| @@ -20,6 +21,7 @@
|
| #include "cc/output/output_surface.h"
|
| #include "cc/resources/release_callback.h"
|
| #include "cc/resources/resource_format.h"
|
| +#include "cc/resources/return_callback.h"
|
| #include "cc/resources/single_release_callback.h"
|
| #include "cc/resources/texture_mailbox.h"
|
| #include "cc/resources/transferable_resource.h"
|
| @@ -144,7 +146,7 @@ class CC_EXPORT ResourceProvider {
|
| bool ShallowFlushIfSupported();
|
|
|
| // Creates accounting for a child. Returns a child ID.
|
| - int CreateChild();
|
| + int CreateChild(const ReturnCallback& return_callback);
|
|
|
| // Destroys accounting for the child, deleting all accounted resources.
|
| void DestroyChild(int child);
|
| @@ -159,23 +161,25 @@ class CC_EXPORT ResourceProvider {
|
| void PrepareSendToParent(const ResourceIdArray& resources,
|
| TransferableResourceArray* transferable_resources);
|
|
|
| - // Prepares resources to be transfered back to the child, moving them to
|
| - // mailboxes and serializing meta-data into TransferableResources.
|
| - // Resources are removed from the ResourceProvider. Note: the resource IDs
|
| - // passed are in the parent namespace and will be translated to the child
|
| - // namespace when returned.
|
| - void PrepareSendReturnsToChild(int child,
|
| - const ResourceIdArray& resources,
|
| - ReturnedResourceArray* returned_resources);
|
| -
|
| // Receives resources from a child, moving them from mailboxes. Resource IDs
|
| // passed are in the child namespace, and will be translated to the parent
|
| // namespace, added to the child->parent map.
|
| + // This adds the resources to the working set in the ResourceProvider without
|
| + // declaring which resources are in use. Use DeclareUsedResourcesFromChild
|
| + // after calling this method to do that. All calls to ReceiveFromChild should
|
| + // be followed by a DeclareUsedResourcesFromChild.
|
| // NOTE: if the sync_point is set on any TransferableResource, this will
|
| // wait on it.
|
| void ReceiveFromChild(
|
| int child, const TransferableResourceArray& transferable_resources);
|
|
|
| + // Once a set of resources have been received, they may or may not be used.
|
| + // This declares what set of resources are currently in use from the child,
|
| + // releasing any other resources back to the child.
|
| + void DeclareUsedResourcesFromChild(
|
| + int child,
|
| + const ResourceIdArray& resources_from_child);
|
| +
|
| // Receives resources from the parent, moving them from mailboxes. Resource
|
| // IDs passed are in the child namespace.
|
| // NOTE: if the sync_point is set on any TransferableResource, this will
|
| @@ -359,6 +363,7 @@ class CC_EXPORT ResourceProvider {
|
| GLenum filter,
|
| GLint wrap_mode);
|
|
|
| + int child_id;
|
| unsigned gl_id;
|
| // Pixel buffer used for set pixels without unnecessary copying.
|
| unsigned gl_pixel_buffer_id;
|
| @@ -392,12 +397,19 @@ class CC_EXPORT ResourceProvider {
|
| ResourceFormat format;
|
| };
|
| typedef base::hash_map<ResourceId, Resource> ResourceMap;
|
| +
|
| + static bool CompareResourceMapIteratorsByChildId(
|
| + const std::pair<ReturnedResource, ResourceMap::iterator>& a,
|
| + const std::pair<ReturnedResource, ResourceMap::iterator>& b);
|
| +
|
| struct Child {
|
| Child();
|
| ~Child();
|
|
|
| ResourceIdMap child_to_parent_map;
|
| ResourceIdMap parent_to_child_map;
|
| + ReturnCallback return_callback;
|
| + ResourceIdSet in_use_resources;
|
| };
|
| typedef base::hash_map<int, Child> ChildMap;
|
|
|
| @@ -428,6 +440,9 @@ class CC_EXPORT ResourceProvider {
|
| ForShutdown,
|
| };
|
| void DeleteResourceInternal(ResourceMap::iterator it, DeleteStyle style);
|
| + void DeleteAndReturnUnusedResourcesToChild(Child* child_info,
|
| + DeleteStyle style,
|
| + const ResourceIdArray& unused);
|
| void LazyCreate(Resource* resource);
|
| void LazyAllocate(Resource* resource);
|
|
|
|
|