| Index: cc/resource_provider.cc
|
| diff --git a/cc/resource_provider.cc b/cc/resource_provider.cc
|
| index eb17f188fef9edb5cc7465dd94ab1e451a96192d..b6b369580c81a8adf41f57338ca1ec7c3bf68813 100644
|
| --- a/cc/resource_provider.cc
|
| +++ b/cc/resource_provider.cc
|
| @@ -16,6 +16,7 @@
|
| #include "cc/gl_renderer.h" // For the GLC() macro.
|
| #include "cc/proxy.h"
|
| #include "cc/texture_uploader.h"
|
| +#include "cc/transferable_resource.h"
|
| #include "third_party/khronos/GLES2/gl2.h"
|
| #include "third_party/khronos/GLES2/gl2ext.h"
|
| #include "ui/gfx/rect.h"
|
| @@ -58,14 +59,6 @@ static bool isTextureFormatSupportedForStorage(GLenum format)
|
| return (format == GL_RGBA || format == GL_BGRA_EXT);
|
| }
|
|
|
| -ResourceProvider::TransferableResourceList::TransferableResourceList()
|
| -{
|
| -}
|
| -
|
| -ResourceProvider::TransferableResourceList::~TransferableResourceList()
|
| -{
|
| -}
|
| -
|
| ResourceProvider::Resource::Resource()
|
| : glId(0)
|
| , pixels(0)
|
| @@ -548,37 +541,36 @@ const ResourceProvider::ResourceIdMap& ResourceProvider::getChildToParentMap(int
|
| return it->second.childToParentMap;
|
| }
|
|
|
| -ResourceProvider::TransferableResourceList ResourceProvider::prepareSendToParent(const ResourceIdArray& resources)
|
| +void ResourceProvider::prepareSendToParent(const ResourceIdArray& resources, TransferableResourceList* list)
|
| {
|
| DCHECK(Proxy::isImplThread());
|
| - TransferableResourceList list;
|
| - list.syncPoint = 0;
|
| + list->sync_point = 0;
|
| + list->resources.clear();
|
| WebGraphicsContext3D* context3d = m_context->context3D();
|
| if (!context3d || !context3d->makeContextCurrent()) {
|
| // FIXME: Implement this path for software compositing.
|
| - return list;
|
| + return;
|
| }
|
| for (ResourceIdArray::const_iterator it = resources.begin(); it != resources.end(); ++it) {
|
| TransferableResource resource;
|
| if (transferResource(context3d, *it, &resource)) {
|
| m_resources.find(*it)->second.exported = true;
|
| - list.resources.push_back(resource);
|
| + list->resources.push_back(resource);
|
| }
|
| }
|
| - if (list.resources.size())
|
| - list.syncPoint = context3d->insertSyncPoint();
|
| - return list;
|
| + if (list->resources.size())
|
| + list->sync_point = context3d->insertSyncPoint();
|
| }
|
|
|
| -ResourceProvider::TransferableResourceList ResourceProvider::prepareSendToChild(int child, const ResourceIdArray& resources)
|
| +void ResourceProvider::prepareSendToChild(int child, const ResourceIdArray& resources, TransferableResourceList* list)
|
| {
|
| DCHECK(Proxy::isImplThread());
|
| - TransferableResourceList list;
|
| - list.syncPoint = 0;
|
| + list->sync_point = 0;
|
| + list->resources.clear();
|
| WebGraphicsContext3D* context3d = m_context->context3D();
|
| if (!context3d || !context3d->makeContextCurrent()) {
|
| // FIXME: Implement this path for software compositing.
|
| - return list;
|
| + return;
|
| }
|
| Child& childInfo = m_children.find(child)->second;
|
| for (ResourceIdArray::const_iterator it = resources.begin(); it != resources.end(); ++it) {
|
| @@ -589,12 +581,11 @@ ResourceProvider::TransferableResourceList ResourceProvider::prepareSendToChild(
|
| resource.id = childInfo.parentToChildMap[*it];
|
| childInfo.parentToChildMap.erase(*it);
|
| childInfo.childToParentMap.erase(resource.id);
|
| - list.resources.push_back(resource);
|
| + list->resources.push_back(resource);
|
| deleteResource(*it);
|
| }
|
| - if (list.resources.size())
|
| - list.syncPoint = context3d->insertSyncPoint();
|
| - return list;
|
| + if (list->resources.size())
|
| + list->sync_point = context3d->insertSyncPoint();
|
| }
|
|
|
| void ResourceProvider::receiveFromChild(int child, const TransferableResourceList& resources)
|
| @@ -605,14 +596,14 @@ void ResourceProvider::receiveFromChild(int child, const TransferableResourceLis
|
| // FIXME: Implement this path for software compositing.
|
| return;
|
| }
|
| - if (resources.syncPoint) {
|
| + if (resources.sync_point) {
|
| // NOTE: If the parent is a browser and the child a renderer, the parent
|
| // is not supposed to have its context wait, because that could induce
|
| // deadlocks and/or security issues. The caller is responsible for
|
| - // waiting asynchronously, and resetting syncPoint before calling this.
|
| + // waiting asynchronously, and resetting sync_point before calling this.
|
| // However if the parent is a renderer (e.g. browser tag), it may be ok
|
| // (and is simpler) to wait.
|
| - GLC(context3d, context3d->waitSyncPoint(resources.syncPoint));
|
| + GLC(context3d, context3d->waitSyncPoint(resources.sync_point));
|
| }
|
| Child& childInfo = m_children.find(child)->second;
|
| for (TransferableResourceArray::const_iterator it = resources.resources.begin(); it != resources.resources.end(); ++it) {
|
| @@ -637,8 +628,8 @@ void ResourceProvider::receiveFromParent(const TransferableResourceList& resourc
|
| // FIXME: Implement this path for software compositing.
|
| return;
|
| }
|
| - if (resources.syncPoint)
|
| - GLC(context3d, context3d->waitSyncPoint(resources.syncPoint));
|
| + if (resources.sync_point)
|
| + GLC(context3d, context3d->waitSyncPoint(resources.sync_point));
|
| for (TransferableResourceArray::const_iterator it = resources.resources.begin(); it != resources.resources.end(); ++it) {
|
| ResourceMap::iterator mapIterator = m_resources.find(it->id);
|
| DCHECK(mapIterator != m_resources.end());
|
| @@ -667,7 +658,7 @@ bool ResourceProvider::transferResource(WebGraphicsContext3D* context, ResourceI
|
| resource->id = id;
|
| resource->format = source->format;
|
| resource->size = source->size;
|
| - if (m_mailboxes.size()) {
|
| + if (!m_mailboxes.empty()) {
|
| resource->mailbox = m_mailboxes.front();
|
| m_mailboxes.pop_front();
|
| }
|
|
|