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

Unified Diff: cc/CCResourceProvider.cpp

Issue 10915298: Add CCDelegatingRenderer, and corresponding IPCs (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix clang 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
« no previous file with comments | « cc/CCResourceProvider.h ('k') | cc/CCResourceProviderTest.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/CCResourceProvider.cpp
diff --git a/cc/CCResourceProvider.cpp b/cc/CCResourceProvider.cpp
index 54918c43d52f47a833353a89515d743d3a41d082..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)
@@ -66,7 +59,7 @@ CCResourceProvider::Resource::Resource()
, lockedForWrite(false)
, external(false)
, exported(false)
- , markedForDeletion(false)
+ , deleted(false)
, size()
, format(0)
, type(static_cast<ResourceType>(0))
@@ -81,7 +74,7 @@ CCResourceProvider::Resource::Resource(unsigned textureId, int pool, const IntSi
, lockedForWrite(false)
, external(false)
, exported(false)
- , markedForDeletion(false)
+ , deleted(false)
, size(size)
, format(format)
, type(GLTexture)
@@ -96,7 +89,7 @@ CCResourceProvider::Resource::Resource(uint8_t* pixels, int pool, const IntSize&
, lockedForWrite(false)
, external(false)
, exported(false)
- , markedForDeletion(false)
+ , deleted(false)
, size(size)
, format(format)
, type(Bitmap)
@@ -222,10 +215,10 @@ void CCResourceProvider::deleteResource(ResourceId id)
#endif
ASSERT(!resource->lockedForWrite);
ASSERT(!resource->lockForReadCount);
- ASSERT(!resource->markedForDeletion);
+ ASSERT(!resource->deleted);
if (resource->exported) {
- resource->markedForDeletion = true;
+ resource->deleted = true;
return;
} else
deleteResourceInternal(it);
@@ -255,10 +248,10 @@ void CCResourceProvider::deleteOwnedResources(int pool)
ResourceIdArray toDelete;
for (ResourceMap::iterator it = m_resources.begin(); it != m_resources.end(); ++it) {
#if WTF_NEW_HASHMAP_ITERATORS_INTERFACE
- if (it->value.pool == pool && !it->value.external && !it->value.markedForDeletion)
+ if (it->value.pool == pool && !it->value.external && !it->value.deleted)
toDelete.append(it->key);
#else
- if (it->second.pool == pool && !it->second.external && !it->value.markedForDeletion)
+ if (it->second.pool == pool && !it->second.external && !it->value.deleted)
toDelete.append(it->first);
#endif
}
@@ -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
@@ -661,7 +652,7 @@ void CCResourceProvider::receiveFromParent(const TransferableResourceList& resou
GLC(context3d, context3d->bindTexture(GraphicsContext3D::TEXTURE_2D, resource->glId));
GLC(context3d, context3d->consumeTextureCHROMIUM(GraphicsContext3D::TEXTURE_2D, it->mailbox.name));
m_mailboxes.append(it->mailbox);
- if (resource->markedForDeletion)
+ if (resource->deleted)
deleteResourceInternal(mapIterator);
}
}
@@ -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
« no previous file with comments | « cc/CCResourceProvider.h ('k') | cc/CCResourceProviderTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698