[Webkit-unassigned] [Bug 75883] [Qt][WK2] WebProcesses crashes when composited reflections/masks are present

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Wed Jan 11 06:21:46 PST 2012


https://bugs.webkit.org/show_bug.cgi?id=75883





--- Comment #5 from Simon Hausmann <hausmann at webkit.org>  2012-01-11 06:21:46 PST ---
(From update of attachment 121843)
View in context: https://bugs.webkit.org/attachment.cgi?id=121843&action=review

Most of it makes sense to me, but I have a couple of questions where answers would help me to understand your patch better :)

> Source/WebCore/ChangeLog:13
> +        (WebCore::TextureMapperNode::collectVisibleContentsRects):

Can you elaborate about this part of your change?

> Source/WebCore/platform/graphics/texmap/TextureMapperNode.cpp:257
> +    if (m_state.tileOwnership == ExternallyManagedTiles) {
> +        HashMap<int, ExternallyManagedTile>::iterator end = m_externallyManagedTiles.end();
> +        for (HashMap<int, ExternallyManagedTile>::iterator mapIterator = m_externallyManagedTiles.begin(); mapIterator != end; ++mapIterator) {
> +            if (mapIterator->second.frontBuffer.texture)
> +                return mapIterator->second.frontBuffer.texture.get();
> +        }

So this simply returns the texture of the first tile that has one, right?

> Source/WebKit2/WebProcess/WebCoreSupport/WebGraphicsLayer.cpp:382
> +    if (layer)
> +        toWebGraphicsLayer(layer)->setLayerTreeTileClient(layerTreeTileClient());

I notice that setReplicatedByLayer sets the layer tree client before notifyChange() and setMaskLayer() sets it afterwards. Is there any chance that could make a difference? (seems unlikely to me, but you know the code better, so I thought I'd mention it :)

> Source/WebKit2/WebProcess/WebCoreSupport/WebGraphicsLayer.cpp:414
> -    if (replicaLayer())
> -        replicaLayer()->syncCompositingState(rect);
> -    if (maskLayer())
> -        maskLayer()->syncCompositingState(rect);
> +
> +    if (WebGraphicsLayer* mask = toWebGraphicsLayer(maskLayer()))
> +        mask->syncCompositingStateForThisLayerOnly();
> +
> +    if (WebGraphicsLayer* replica = toWebGraphicsLayer(replicaLayer()))
> +        replica->syncCompositingStateForThisLayerOnly();

Aha, is this an optimization based on the fact that mask or replica layers cannot have children?

> Source/WebKit2/WebProcess/WebCoreSupport/WebGraphicsLayer.cpp:536
> -    if (m_image)
> +    if (!drawsContent())

This as well as the removal of the comment are subtle ;). Can you explain these two changes?

-- 
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.



More information about the webkit-unassigned mailing list