Bug 93099 - [BlackBerry] Overlays display checkerboard that doesn't resolve
Summary: [BlackBerry] Overlays display checkerboard that doesn't resolve
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: WebKit BlackBerry (show other bugs)
Version: 528+ (Nightly build)
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Arvid Nilsson
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2012-08-03 05:38 PDT by Arvid Nilsson
Modified: 2012-08-03 08:19 PDT (History)
8 users (show)

See Also:


Attachments
Patch (14.66 KB, patch)
2012-08-03 05:54 PDT, Arvid Nilsson
no flags Details | Formatted Diff | Diff
Patch (14.66 KB, patch)
2012-08-03 07:27 PDT, Arvid Nilsson
no flags Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
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.