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