Title: [121824] trunk/Source/WebKit/blackberry
- Revision
- 121824
- Author
- [email protected]
- Date
- 2012-07-03 19:59:30 -0700 (Tue, 03 Jul 2012)
Log Message
[BlackBerry] Checkerboard shown when clicking on error page buttons
https://bugs.webkit.org/show_bug.cgi?id=90152
RIM PR #161867
Reviewed by George Staikos.
r121514 just made the race occur in lower possibility but can't avoid it.
This path is using another approach to fix the problem. When we are resetting
backingstore while committing a page we need to suspend backingstore and
screen update to make sure no other threads can update backingstore and screen.
* Api/BackingStore.cpp:
(BlackBerry::WebKit::BackingStorePrivate::resetTiles):
* Api/WebPage.cpp:
(BlackBerry::WebKit::WebPagePrivate::setLoadState):
Modified Paths
Diff
Modified: trunk/Source/WebKit/blackberry/Api/BackingStore.cpp (121823 => 121824)
--- trunk/Source/WebKit/blackberry/Api/BackingStore.cpp 2012-07-04 02:34:16 UTC (rev 121823)
+++ trunk/Source/WebKit/blackberry/Api/BackingStore.cpp 2012-07-04 02:59:30 UTC (rev 121824)
@@ -1890,10 +1890,6 @@
void BackingStorePrivate::resetTiles(bool resetBackground)
{
- // We need to reset m_hasBlitJobs to prevent ui thread from
- // drawing checkerboard unintentionally. See RIM PR #161867.
- m_hasBlitJobs = false;
-
BackingStoreGeometry* currentState = frontState();
TileMap currentMap = currentState->tileMap();
Modified: trunk/Source/WebKit/blackberry/Api/WebPage.cpp (121823 => 121824)
--- trunk/Source/WebKit/blackberry/Api/WebPage.cpp 2012-07-04 02:34:16 UTC (rev 121823)
+++ trunk/Source/WebKit/blackberry/Api/WebPage.cpp 2012-07-04 02:59:30 UTC (rev 121824)
@@ -967,6 +967,9 @@
Platform::createMethodCallMessage(&WebPagePrivate::destroyLayerResources, this));
}
#endif
+ // Suspend screen update to avoid ui thread blitting while resetting backingstore.
+ m_backingStore->d->suspendScreenAndBackingStoreUpdates();
+
m_previousContentsSize = IntSize();
m_backingStore->d->resetRenderQueue();
m_backingStore->d->resetTiles(true /* resetBackground */);
@@ -1038,6 +1041,8 @@
setScrollPosition(IntPoint::zero());
notifyTransformedScrollChanged();
+ m_backingStore->d->resumeScreenAndBackingStoreUpdates(BackingStore::None);
+
// Paints the visible backingstore as white. Note it is important we do
// this strictly after re-setting the scroll position to origin and resetting
// the scales otherwise the visible contents calculation is wrong and we
Modified: trunk/Source/WebKit/blackberry/ChangeLog (121823 => 121824)
--- trunk/Source/WebKit/blackberry/ChangeLog 2012-07-04 02:34:16 UTC (rev 121823)
+++ trunk/Source/WebKit/blackberry/ChangeLog 2012-07-04 02:59:30 UTC (rev 121824)
@@ -1,3 +1,21 @@
+2012-07-03 Leo Yang <[email protected]>
+
+ [BlackBerry] Checkerboard shown when clicking on error page buttons
+ https://bugs.webkit.org/show_bug.cgi?id=90152
+ RIM PR #161867
+
+ Reviewed by George Staikos.
+
+ r121514 just made the race occur in lower possibility but can't avoid it.
+ This path is using another approach to fix the problem. When we are resetting
+ backingstore while committing a page we need to suspend backingstore and
+ screen update to make sure no other threads can update backingstore and screen.
+
+ * Api/BackingStore.cpp:
+ (BlackBerry::WebKit::BackingStorePrivate::resetTiles):
+ * Api/WebPage.cpp:
+ (BlackBerry::WebKit::WebPagePrivate::setLoadState):
+
2012-07-03 George Staikos <[email protected]>
[BlackBerry] Enable Custom Scheme Handlers for BlackBerry.
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes