Bug 93099

Summary: [BlackBerry] Overlays display checkerboard that doesn't resolve
Product: WebKit Reporter: Arvid Nilsson <anilsson>
Component: WebKit BlackBerryAssignee: Arvid Nilsson <anilsson>
Status: RESOLVED FIXED    
Severity: Normal CC: anilsson, manyoso, mifenton, rwlbuis, staikos, tonikitoo, webkit.review.bot, yong.li.webkit
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: Unspecified   
OS: Unspecified   
Attachments:
Description Flags
Patch
none
Patch none

Description Arvid Nilsson 2012-08-03 05:38:41 PDT
The WebKit-thread overlays, like tap highlight, inspector highlight and selection are all part of a separate graphics layer tree rooted in WebPagePrivate::m_overlayLayer.

When LayerRenderer needs to schedule a commit to reactively render tiles and resolve checkerboard, it does so through the root layer. Since the overlay layer root didn't have a GraphicsLayerClient, there was no implementation of GraphicsLayerClient::notifySyncRequired() to call, and a commit was never scheduled, thus checkerboard never resolved.

Fixed by adding a fallback implementation of GraphicsLayerClient in WebPagePrivate and hooking up the overlay root to it. Also, this implementation can be shared by the various overlays to avoide code duplication, specifically to implement notifySyncRequired(), showDebugBorders(), showRepaintCounter() only once.
Comment 1 Arvid Nilsson 2012-08-03 05:43:04 PDT
In addition, I found a bug where WebPagePrivate::updateDelegatedOverlays() was called right in the middle of the commit operation, after performing the webkit thread part of the commit operation but before we continued on the compositing thread. Since updateDelegatedOverlays() typically mutates layers, this is bad (layers should not be mutated mid-commit) and also caused each commit to schedule a new one which results in an endless sequence of commits.
Comment 2 Arvid Nilsson 2012-08-03 05:54:52 PDT
Created attachment 156340 [details]
Patch
Comment 3 Antonio Gomes 2012-08-03 07:12:19 PDT
Comment on attachment 156340 [details]
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=156340&action=review

> Source/WebKit/blackberry/Api/WebPage_p.h:395
> +    // Fallback GraphicsLayerClient implementation, used for various overlay layers

nit: lacks a period at the end.
Comment 4 Antonio Gomes 2012-08-03 07:14:12 PDT
Comment on attachment 156340 [details]
Patch

err r+
Comment 5 Arvid Nilsson 2012-08-03 07:27:16 PDT
Created attachment 156374 [details]
Patch
Comment 6 Arvid Nilsson 2012-08-03 07:27:49 PDT
Comment on attachment 156374 [details]
Patch

Already reviewed by Antonio, just added a dot to a comment.
Comment 7 WebKit Review Bot 2012-08-03 08:19:34 PDT
Comment on attachment 156374 [details]
Patch

Clearing flags on attachment: 156374

Committed r124615: <http://trac.webkit.org/changeset/124615>
Comment 8 WebKit Review Bot 2012-08-03 08:19:38 PDT
All reviewed patches have been landed.  Closing bug.