Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2844)

Unified Diff: cc/CCResourceProvider.cpp

Issue 10915298: Add CCDelegatingRenderer, and corresponding IPCs (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: merge fix Created 8 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: cc/CCResourceProvider.cpp
diff --git a/cc/CCResourceProvider.cpp b/cc/CCResourceProvider.cpp
index be87e82b23827c8dd47f4ff5b2c236baf2e6bbaa..42caa1452c43ab2b059444ea8cc5d7a15ea0a0b7 100644
--- a/cc/CCResourceProvider.cpp
+++ b/cc/CCResourceProvider.cpp
@@ -14,6 +14,7 @@
#include "base/debug/alias.h"
#include "base/string_split.h"
#include "base/string_util.h"
+#include "cc/transferable_resource.h"
#include "CCProxy.h"
#include "CCRendererGL.h" // For the GLC() macro.
#include "Extensions3DChromium.h"
@@ -50,14 +51,6 @@ static bool isTextureFormatSupportedForStorage(GC3Denum format)
return (format == GraphicsContext3D::RGBA || format == Extensions3D::BGRA_EXT);
}
-CCResourceProvider::TransferableResourceList::TransferableResourceList()
-{
-}
-
-CCResourceProvider::TransferableResourceList::~TransferableResourceList()
-{
-}
-
CCResourceProvider::Resource::Resource()
: glId(0)
, pixels(0)
@@ -546,15 +539,15 @@ const CCResourceProvider::ResourceIdMap& CCResourceProvider::getChildToParentMap
#endif
}
-CCResourceProvider::TransferableResourceList CCResourceProvider::prepareSendToParent(const ResourceIdArray& resources)
+void CCResourceProvider::prepareSendToParent(const ResourceIdArray& resources, TransferableResourceList* list)
{
ASSERT(CCProxy::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;
@@ -564,23 +557,22 @@ CCResourceProvider::TransferableResourceList CCResourceProvider::prepareSendToPa
#else
m_resources.find(*it)->second.exported = true;
#endif
- list.resources.append(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();
}
-CCResourceProvider::TransferableResourceList CCResourceProvider::prepareSendToChild(int child, const ResourceIdArray& resources)
+void CCResourceProvider::prepareSendToChild(int child, const ResourceIdArray& resources, TransferableResourceList* list)
{
ASSERT(CCProxy::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;
}
#if WTF_NEW_HASHMAP_ITERATORS_INTERFACE
Child& childInfo = m_children.find(child)->value;
@@ -594,12 +586,11 @@ CCResourceProvider::TransferableResourceList CCResourceProvider::prepareSendToCh
resource.id = childInfo.parentToChildMap.get(*it);
childInfo.parentToChildMap.remove(*it);
childInfo.childToParentMap.remove(resource.id);
- list.resources.append(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 CCResourceProvider::receiveFromChild(int child, const TransferableResourceList& resources)
@@ -610,27 +601,27 @@ void CCResourceProvider::receiveFromChild(int child, const TransferableResourceL
// 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));
}
#if WTF_NEW_HASHMAP_ITERATORS_INTERFACE
Child& childInfo = m_children.find(child)->value;
#else
Child& childInfo = m_children.find(child)->second;
#endif
- for (Vector<TransferableResource>::const_iterator it = resources.resources.begin(); it != resources.resources.end(); ++it) {
+ for (std::vector<TransferableResource>::const_iterator it = resources.resources.begin(); it != resources.resources.end(); ++it) {
unsigned textureId;
GLC(context3d, textureId = context3d->createTexture());
GLC(context3d, context3d->bindTexture(GraphicsContext3D::TEXTURE_2D, textureId));
GLC(context3d, context3d->consumeTextureCHROMIUM(GraphicsContext3D::TEXTURE_2D, it->mailbox.name));
ResourceId id = m_nextId++;
- Resource resource(textureId, childInfo.pool, it->size, it->format);
+ Resource resource(textureId, childInfo.pool, IntSize(it->size.width(), it->size.height()), it->format);
m_resources.add(id, resource);
m_mailboxes.append(it->mailbox);
childInfo.parentToChildMap.add(id, it->id);
@@ -646,9 +637,9 @@ void CCResourceProvider::receiveFromParent(const TransferableResourceList& resou
// FIXME: Implement this path for software compositing.
return;
}
- if (resources.syncPoint)
- GLC(context3d, context3d->waitSyncPoint(resources.syncPoint));
- for (Vector<TransferableResource>::const_iterator it = resources.resources.begin(); it != resources.resources.end(); ++it) {
+ if (resources.sync_point)
+ GLC(context3d, context3d->waitSyncPoint(resources.sync_point));
+ for (std::vector<TransferableResource>::const_iterator it = resources.resources.begin(); it != resources.resources.end(); ++it) {
ResourceMap::iterator mapIterator = m_resources.find(it->id);
ASSERT(mapIterator != m_resources.end());
#if WTF_NEW_HASHMAP_ITERATORS_INTERFACE
@@ -683,7 +674,7 @@ bool CCResourceProvider::transferResource(WebGraphicsContext3D* context, Resourc
return false;
resource->id = id;
resource->format = source->format;
- resource->size = source->size;
+ resource->size = gfx::Size(source->size.height(), source->size.width());
if (!m_mailboxes.isEmpty())
resource->mailbox = m_mailboxes.takeFirst();
else

Powered by Google App Engine
This is Rietveld 408576698