Title: [93432] trunk/Source/WebCore
Revision
93432
Author
[email protected]
Date
2011-08-19 13:03:58 -0700 (Fri, 19 Aug 2011)

Log Message

[CSSRegions]Speed up RenderFlowThread repaint of regions
https://bugs.webkit.org/show_bug.cgi?id=66566

Patch by Mihnea Ovidenie <[email protected]> on 2011-08-19
Reviewed by David Hyatt.

When in printing or the repaint rectangle is empty, there is no need to iterate
the render flow regions in order to repaint.
Covered by existing tests.

* rendering/RenderFlowThread.cpp:
(WebCore::RenderFlowThread::shouldRepaint):
(WebCore::RenderFlowThread::repaintRectangleInRegions):
* rendering/RenderFlowThread.h:

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (93431 => 93432)


--- trunk/Source/WebCore/ChangeLog	2011-08-19 19:44:45 UTC (rev 93431)
+++ trunk/Source/WebCore/ChangeLog	2011-08-19 20:03:58 UTC (rev 93432)
@@ -1,5 +1,21 @@
 2011-08-19  Mihnea Ovidenie  <[email protected]>
 
+        [CSSRegions]Speed up RenderFlowThread repaint of regions
+        https://bugs.webkit.org/show_bug.cgi?id=66566
+
+        Reviewed by David Hyatt.
+
+        When in printing or the repaint rectangle is empty, there is no need to iterate
+        the render flow regions in order to repaint.
+        Covered by existing tests.
+
+        * rendering/RenderFlowThread.cpp:
+        (WebCore::RenderFlowThread::shouldRepaint):
+        (WebCore::RenderFlowThread::repaintRectangleInRegions):
+        * rendering/RenderFlowThread.h:
+
+2011-08-19  Mihnea Ovidenie  <[email protected]>
+
         [CSSRegions]Parse -webkit-region-break(after, before, inside)
         https://bugs.webkit.org/show_bug.cgi?id=66559
 

Modified: trunk/Source/WebCore/rendering/RenderFlowThread.cpp (93431 => 93432)


--- trunk/Source/WebCore/rendering/RenderFlowThread.cpp	2011-08-19 19:44:45 UTC (rev 93431)
+++ trunk/Source/WebCore/rendering/RenderFlowThread.cpp	2011-08-19 20:03:58 UTC (rev 93432)
@@ -30,6 +30,7 @@
 #include "config.h"
 
 #include "RenderFlowThread.h"
+
 #include "HitTestRequest.h"
 #include "HitTestResult.h"
 #include "Node.h"
@@ -399,8 +400,19 @@
     return isPointInsideFlowThread;
 }
 
+bool RenderFlowThread::shouldRepaint(const LayoutRect& r) const
+{
+    if (view()->printing() || r.isEmpty())
+        return false;
+
+    return true;
+}
+
 void RenderFlowThread::repaintRectangleInRegions(const LayoutRect& repaintRect, bool immediate)
 {
+    if (!shouldRepaint(repaintRect))
+        return;
+
     for (RenderRegionList::iterator iter = m_regionList.begin(); iter != m_regionList.end(); ++iter) {
         RenderRegion* region = *iter;
         if (!region->isValid())

Modified: trunk/Source/WebCore/rendering/RenderFlowThread.h (93431 => 93432)


--- trunk/Source/WebCore/rendering/RenderFlowThread.h	2011-08-19 19:44:45 UTC (rev 93431)
+++ trunk/Source/WebCore/rendering/RenderFlowThread.h	2011-08-19 20:03:58 UTC (rev 93432)
@@ -104,6 +104,8 @@
     void removeDependencyOnFlowThread(RenderFlowThread*);
     void checkInvalidRegions();
 
+    bool shouldRepaint(const LayoutRect&) const;
+
     typedef ListHashSet<RenderObject*> FlowThreadChildList;
     FlowThreadChildList m_flowThreadChildList;
 
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to