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.
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.
Created attachment 156340 [details] Patch
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 on attachment 156340 [details] Patch err r+
Created attachment 156374 [details] Patch
Comment on attachment 156374 [details] Patch Already reviewed by Antonio, just added a dot to a comment.
Comment on attachment 156374 [details] Patch Clearing flags on attachment: 156374 Committed r124615: <http://trac.webkit.org/changeset/124615>
All reviewed patches have been landed. Closing bug.