diff options
author | Simon Hausmann <simon.hausmann@digia.com> | 2012-11-30 16:58:06 +0100 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@digia.com> | 2012-11-30 17:03:09 +0100 |
commit | 32ea33253afbbdefd2680aa95ab5f57455272ae7 (patch) | |
tree | 2389569585b666c310fbb36d3fb8e6ab94462967 /Source/WebKit2/UIProcess/CoordinatedGraphics | |
parent | 41c25f231cbca1babc445187283524cc6c751c71 (diff) | |
download | qtwebkit-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.cpp | 43 | ||||
-rw-r--r-- | Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.h | 7 |
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; |