Title: [158391] trunk/Source/WebCore
Revision
158391
Author
[email protected]
Date
2013-10-31 14:03:15 -0700 (Thu, 31 Oct 2013)

Log Message

Repro scrolling crash with scrollbars that use setPresentationValue on the 
scrolling thread
https://bugs.webkit.org/show_bug.cgi?id=123549
-and corresponding-
<rdar://problem/15246606>

Reviewed by Brady Eidson.

Here's another speculative fix. If a scrollbar was removed, we would not properly 
inform the scrolling thread. Instead of checking supportsUpdateOnSecondaryThread() 
before calling setScrollbarPaintersFromScrollbars(), check it from within 
setScrollbarPaintersFromScrollbars(), and this will allow the ScrollbarPainter to 
be properly updated.

* page/scrolling/mac/ScrollingCoordinatorMac.mm:
(WebCore::ScrollingCoordinatorMac::frameViewLayoutUpdated):
* page/scrolling/mac/ScrollingStateScrollingNodeMac.mm:
(WebCore::ScrollingStateScrollingNode::setScrollbarPaintersFromScrollbars):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (158390 => 158391)


--- trunk/Source/WebCore/ChangeLog	2013-10-31 20:13:45 UTC (rev 158390)
+++ trunk/Source/WebCore/ChangeLog	2013-10-31 21:03:15 UTC (rev 158391)
@@ -1,3 +1,24 @@
+2013-10-31  Beth Dakin  <[email protected]>
+
+        Repro scrolling crash with scrollbars that use setPresentationValue on the 
+        scrolling thread
+        https://bugs.webkit.org/show_bug.cgi?id=123549
+        -and corresponding-
+        <rdar://problem/15246606>
+
+        Reviewed by Brady Eidson.
+
+        Here's another speculative fix. If a scrollbar was removed, we would not properly 
+        inform the scrolling thread. Instead of checking supportsUpdateOnSecondaryThread() 
+        before calling setScrollbarPaintersFromScrollbars(), check it from within 
+        setScrollbarPaintersFromScrollbars(), and this will allow the ScrollbarPainter to 
+        be properly updated.
+
+        * page/scrolling/mac/ScrollingCoordinatorMac.mm:
+        (WebCore::ScrollingCoordinatorMac::frameViewLayoutUpdated):
+        * page/scrolling/mac/ScrollingStateScrollingNodeMac.mm:
+        (WebCore::ScrollingStateScrollingNode::setScrollbarPaintersFromScrollbars):
+
 2013-10-31  Csaba Osztrogonác  <[email protected]>
 
         Unreviewed typo fix after 158386. (buildfix after r158365)

Modified: trunk/Source/WebCore/page/scrolling/mac/ScrollingCoordinatorMac.mm (158390 => 158391)


--- trunk/Source/WebCore/page/scrolling/mac/ScrollingCoordinatorMac.mm	2013-10-31 20:13:45 UTC (rev 158390)
+++ trunk/Source/WebCore/page/scrolling/mac/ScrollingCoordinatorMac.mm	2013-10-31 21:03:15 UTC (rev 158391)
@@ -133,9 +133,7 @@
 
     Scrollbar* verticalScrollbar = frameView->verticalScrollbar();
     Scrollbar* horizontalScrollbar = frameView->horizontalScrollbar();
-    if ((verticalScrollbar && verticalScrollbar->supportsUpdateOnSecondaryThread())
-        || (horizontalScrollbar && horizontalScrollbar->supportsUpdateOnSecondaryThread()))
-        setScrollbarPaintersFromScrollbarsForNode(verticalScrollbar, horizontalScrollbar, node);
+    setScrollbarPaintersFromScrollbarsForNode(verticalScrollbar, horizontalScrollbar, node);
 
     ScrollParameters scrollParameters;
     scrollParameters.horizontalScrollElasticity = frameView->horizontalScrollElasticity();

Modified: trunk/Source/WebCore/page/scrolling/mac/ScrollingStateScrollingNodeMac.mm (158390 => 158391)


--- trunk/Source/WebCore/page/scrolling/mac/ScrollingStateScrollingNodeMac.mm	2013-10-31 20:13:45 UTC (rev 158390)
+++ trunk/Source/WebCore/page/scrolling/mac/ScrollingStateScrollingNodeMac.mm	2013-10-31 21:03:15 UTC (rev 158391)
@@ -99,8 +99,10 @@
         return;
     ScrollbarThemeMac* macTheme = static_cast<ScrollbarThemeMac*>(scrollbarTheme);
 
-    ScrollbarPainter verticalPainter = verticalScrollbar ? macTheme->painterForScrollbar(verticalScrollbar) : 0;
-    ScrollbarPainter horizontalPainter = horizontalScrollbar ? macTheme->painterForScrollbar(horizontalScrollbar) : 0;
+    ScrollbarPainter verticalPainter = verticalScrollbar && verticalScrollbar->supportsUpdateOnSecondaryThread()
+        ? macTheme->painterForScrollbar(verticalScrollbar) : 0;
+    ScrollbarPainter horizontalPainter = horizontalScrollbar && horizontalScrollbar->supportsUpdateOnSecondaryThread()
+        ? macTheme->painterForScrollbar(horizontalScrollbar) : 0;
 
     if (m_verticalScrollbarPainter == verticalPainter && m_horizontalScrollbarPainter == horizontalPainter)
         return;
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to