summaryrefslogtreecommitdiff
path: root/Source/WebKit2/UIProcess/CoordinatedGraphics
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@digia.com>2012-11-30 16:58:06 +0100
committerSimon Hausmann <simon.hausmann@digia.com>2012-11-30 17:03:09 +0100
commit32ea33253afbbdefd2680aa95ab5f57455272ae7 (patch)
tree2389569585b666c310fbb36d3fb8e6ab94462967 /Source/WebKit2/UIProcess/CoordinatedGraphics
parent41c25f231cbca1babc445187283524cc6c751c71 (diff)
downloadqtwebkit-32ea33253afbbdefd2680aa95ab5f57455272ae7.tar.gz
Imported WebKit commit 6a4a1d32e1d779548c726c4826cba9d69eb87601 (http://svn.webkit.org/repository/webkit/trunk@136242)
Final import for the Qt 5.x series that implements the QtWebKit / QtWebKitWidgets split Extra fixes will be cherry-picked. Change-Id: I844f1ebb99c6d6b75db31d6538c2acd628e79681 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'Source/WebKit2/UIProcess/CoordinatedGraphics')
-rw-r--r--Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp43
-rw-r--r--Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.h7
2 files changed, 23 insertions, 27 deletions
diff --git a/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp b/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp
index 7fae9a011..71c4bcbd6 100644
--- a/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp
+++ b/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp
@@ -216,8 +216,8 @@ void LayerTreeRenderer::adjustPositionForFixedLayers()
FloatPoint renderedScrollPosition = boundedScrollPosition(m_renderedContentsScrollPosition, m_visibleContentsRect, m_contentsSize);
FloatSize delta = scrollPosition - renderedScrollPosition;
- LayerMap::iterator end = m_fixedLayers.end();
- for (LayerMap::iterator it = m_fixedLayers.begin(); it != end; ++it)
+ LayerRawPtrMap::iterator end = m_fixedLayers.end();
+ for (LayerRawPtrMap::iterator it = m_fixedLayers.begin(); it != end; ++it)
toTextureMapperLayer(it->value)->setScrollPositionDeltaIfNeeded(delta);
}
@@ -266,17 +266,16 @@ void LayerTreeRenderer::destroyCanvas(WebLayerID id)
void LayerTreeRenderer::setLayerChildren(WebLayerID id, const Vector<WebLayerID>& childIDs)
{
- ensureLayer(id);
- LayerMap::iterator it = m_layers.find(id);
- GraphicsLayer* layer = it->value;
+ GraphicsLayer* layer = ensureLayer(id);
Vector<GraphicsLayer*> children;
for (size_t i = 0; i < childIDs.size(); ++i) {
WebLayerID childID = childIDs[i];
GraphicsLayer* child = layerByID(childID);
if (!child) {
- child = createLayer(childID).leakPtr();
- m_layers.add(childID, child);
+ OwnPtr<GraphicsLayer*> newChild = createLayer(childID);
+ child = newChild.get();
+ m_layers.add(childID, newChild.release());
}
children.append(child);
}
@@ -286,11 +285,8 @@ void LayerTreeRenderer::setLayerChildren(WebLayerID id, const Vector<WebLayerID>
#if ENABLE(CSS_FILTERS)
void LayerTreeRenderer::setLayerFilters(WebLayerID id, const FilterOperations& filters)
{
- ensureLayer(id);
- LayerMap::iterator it = m_layers.find(id);
- ASSERT(it != m_layers.end());
+ GraphicsLayer* layer = ensureLayer(id);
- GraphicsLayer* layer = it->value;
#if ENABLE(CSS_SHADERS)
injectCachedCustomFilterPrograms(filters);
#endif
@@ -332,11 +328,7 @@ void LayerTreeRenderer::removeCustomFilterProgram(int id)
void LayerTreeRenderer::setLayerState(WebLayerID id, const WebLayerInfo& layerInfo)
{
- ensureLayer(id);
- LayerMap::iterator it = m_layers.find(id);
- ASSERT(it != m_layers.end());
-
- GraphicsLayer* layer = it->value;
+ GraphicsLayer* layer = ensureLayer(id);
layer->setReplicatedByLayer(layerByID(layerInfo.replica));
layer->setMaskLayer(layerByID(layerInfo.mask));
@@ -371,26 +363,29 @@ void LayerTreeRenderer::setLayerState(WebLayerID id, const WebLayerInfo& layerIn
void LayerTreeRenderer::deleteLayer(WebLayerID layerID)
{
- GraphicsLayer* layer = layerByID(layerID);
+ OwnPtr<GraphicsLayer> layer = m_layers.take(layerID);
if (!layer)
return;
layer->removeFromParent();
- m_layers.remove(layerID);
m_fixedLayers.remove(layerID);
#if USE(GRAPHICS_SURFACE)
m_surfaceBackingStores.remove(layerID);
#endif
- delete layer;
}
-void LayerTreeRenderer::ensureLayer(WebLayerID id)
+WebCore::GraphicsLayer* LayerTreeRenderer::ensureLayer(WebLayerID id)
{
- // We have to leak the new layer's pointer and manage it ourselves,
- // because OwnPtr is not copyable.
- if (m_layers.find(id) == m_layers.end())
- m_layers.add(id, createLayer(id).leakPtr());
+ LayerMap::iterator it = m_layers.find(id);
+ if (it != m_layers.end())
+ return it->value.get();
+
+ OwnPtr<WebCore::GraphicsLayer> newLayer = createLayer(id);
+ WebCore::GraphicsLayer* layer = newLayer.get();
+ m_layers.add(id, newLayer.release());
+
+ return layer;
}
void LayerTreeRenderer::setRootLayerID(WebLayerID layerID)
diff --git a/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.h b/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.h
index 6f1056aac..946ac6d49 100644
--- a/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.h
+++ b/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.h
@@ -142,7 +142,7 @@ private:
void assignImageBackingToLayer(WebCore::GraphicsLayer*, CoordinatedImageBackingID);
void removeReleasedImageBackingsIfNeeded();
void ensureRootLayer();
- void ensureLayer(WebLayerID);
+ WebCore::GraphicsLayer* ensureLayer(WebLayerID);
void commitPendingBackingStoreOperations();
CoordinatedBackingStore* getBackingStore(WebCore::GraphicsLayer*);
@@ -151,7 +151,6 @@ private:
void removeBackingStoreIfNeeded(WebCore::GraphicsLayer*);
void resetBackingStoreSizeToLayerSize(WebCore::GraphicsLayer*);
- typedef HashMap<WebLayerID, WebCore::GraphicsLayer*> LayerMap;
WebCore::FloatSize m_contentsSize;
WebCore::FloatRect m_visibleContentsRect;
@@ -181,8 +180,10 @@ private:
OwnPtr<WebCore::GraphicsLayer> m_rootLayer;
+ typedef HashMap<WebLayerID, OwnPtr<WebCore::GraphicsLayer> > LayerMap;
LayerMap m_layers;
- LayerMap m_fixedLayers;
+ typedef HashMap<WebLayerID, WebCore::GraphicsLayer*> LayerRawPtrMap;
+ LayerRawPtrMap m_fixedLayers;
WebLayerID m_rootLayerID;
WebCore::IntPoint m_renderedContentsScrollPosition;
WebCore::IntPoint m_pendingRenderedContentsScrollPosition;