Title: [126777] trunk/Source
Revision
126777
Author
[email protected]
Date
2012-08-27 11:36:29 -0700 (Mon, 27 Aug 2012)

Log Message

Make Force Repaint work with tiled backing store
https://bugs.webkit.org/show_bug.cgi?id=95102

Reviewed by Dan Bernstein.

Source/WebCore:

forceRepaint() didn't work correctly with tiled backing
store, because it never actually caused a repaint on the tiles.

Fix by having the drawing area call forceRepaint() on
the TileCache (via the TiledBacking interface), which
just ends up as a setNeedsDisplay().

* WebCore.xcodeproj/project.pbxproj:
* platform/graphics/TiledBacking.h:
* platform/graphics/ca/mac/TileCache.h:
* platform/graphics/ca/mac/TileCache.mm:
(WebCore::TileCache::forceRepaint):

Source/WebKit2:

Have forceRepaint() call down to the tiled backing of each FrameView,
so they can repaint.

* WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
(WebKit::TiledCoreAnimationDrawingArea::forceRepaint):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (126776 => 126777)


--- trunk/Source/WebCore/ChangeLog	2012-08-27 18:05:44 UTC (rev 126776)
+++ trunk/Source/WebCore/ChangeLog	2012-08-27 18:36:29 UTC (rev 126777)
@@ -1,3 +1,23 @@
+2012-08-27  Simon Fraser  <[email protected]>
+
+        Make Force Repaint work with tiled backing store
+        https://bugs.webkit.org/show_bug.cgi?id=95102
+
+        Reviewed by Dan Bernstein.
+
+        forceRepaint() didn't work correctly with tiled backing
+        store, because it never actually caused a repaint on the tiles.
+
+        Fix by having the drawing area call forceRepaint() on
+        the TileCache (via the TiledBacking interface), which
+        just ends up as a setNeedsDisplay().
+
+        * WebCore.xcodeproj/project.pbxproj:
+        * platform/graphics/TiledBacking.h:
+        * platform/graphics/ca/mac/TileCache.h:
+        * platform/graphics/ca/mac/TileCache.mm:
+        (WebCore::TileCache::forceRepaint):
+
 2012-08-27  Victor Carbune  <[email protected]>
 
         Crash when trying to render empty cues

Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (126776 => 126777)


--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj	2012-08-27 18:05:44 UTC (rev 126776)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj	2012-08-27 18:36:29 UTC (rev 126777)
@@ -612,7 +612,7 @@
 		1AF62F2414DAFE910041556C /* ScrollingThreadMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1AF62F2314DAFE910041556C /* ScrollingThreadMac.mm */; };
 		1AF62F2514DAFE9E0041556C /* ScrollingThread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AF62F2014DAFE790041556C /* ScrollingThread.cpp */; };
 		1AF62F2614DAFEA10041556C /* ScrollingThread.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AF62F2114DAFE790041556C /* ScrollingThread.h */; settings = {ATTRIBUTES = (Private, ); }; };
-		1AF89A421518FDEA00E547B5 /* TiledBacking.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AF89A411518FDEA00E547B5 /* TiledBacking.h */; };
+		1AF89A421518FDEA00E547B5 /* TiledBacking.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AF89A411518FDEA00E547B5 /* TiledBacking.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		1AF8E11A1256592600230FF7 /* ProxyServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AF8E1191256592600230FF7 /* ProxyServer.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		1AF8E13312565A4400230FF7 /* ProxyServer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AF8E13212565A4400230FF7 /* ProxyServer.cpp */; };
 		1AF8E1C3125673E000230FF7 /* ProxyServerCFNet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AF8E1C1125673E000230FF7 /* ProxyServerCFNet.cpp */; };

Modified: trunk/Source/WebCore/platform/graphics/TiledBacking.h (126776 => 126777)


--- trunk/Source/WebCore/platform/graphics/TiledBacking.h	2012-08-27 18:05:44 UTC (rev 126776)
+++ trunk/Source/WebCore/platform/graphics/TiledBacking.h	2012-08-27 18:36:29 UTC (rev 126777)
@@ -40,6 +40,7 @@
     virtual void visibleRectChanged(const IntRect&) = 0;
     virtual void setIsInWindow(bool) = 0;
     virtual void setCanHaveScrollbars(bool) = 0;
+    virtual void forceRepaint() = 0;
 
     void setScrollingPerformanceLoggingEnabled(bool flag)  { m_scrollingPerformanceLoggingEnabled = flag; }
     bool scrollingPerformanceLoggingEnabled() const { return m_scrollingPerformanceLoggingEnabled; }

Modified: trunk/Source/WebCore/platform/graphics/ca/mac/TileCache.h (126776 => 126777)


--- trunk/Source/WebCore/platform/graphics/ca/mac/TileCache.h	2012-08-27 18:05:44 UTC (rev 126776)
+++ trunk/Source/WebCore/platform/graphics/ca/mac/TileCache.h	2012-08-27 18:36:29 UTC (rev 126777)
@@ -82,7 +82,8 @@
     virtual void visibleRectChanged(const IntRect&) OVERRIDE;
     virtual void setIsInWindow(bool) OVERRIDE;
     virtual void setCanHaveScrollbars(bool) OVERRIDE;
-
+    virtual void forceRepaint() OVERRIDE;
+    
     IntRect bounds() const;
 
     typedef IntPoint TileIndex;

Modified: trunk/Source/WebCore/platform/graphics/ca/mac/TileCache.mm (126776 => 126777)


--- trunk/Source/WebCore/platform/graphics/ca/mac/TileCache.mm	2012-08-27 18:05:44 UTC (rev 126776)
+++ trunk/Source/WebCore/platform/graphics/ca/mac/TileCache.mm	2012-08-27 18:36:29 UTC (rev 126777)
@@ -233,6 +233,11 @@
     scheduleTileRevalidation(0);
 }
 
+void TileCache::forceRepaint()
+{
+    setNeedsDisplay();
+}
+
 void TileCache::setTileDebugBorderWidth(float borderWidth)
 {
     if (m_tileDebugBorderWidth == borderWidth)

Modified: trunk/Source/WebKit2/ChangeLog (126776 => 126777)


--- trunk/Source/WebKit2/ChangeLog	2012-08-27 18:05:44 UTC (rev 126776)
+++ trunk/Source/WebKit2/ChangeLog	2012-08-27 18:36:29 UTC (rev 126777)
@@ -1,3 +1,16 @@
+2012-08-27  Simon Fraser  <[email protected]>
+
+        Make Force Repaint work with tiled backing store
+        https://bugs.webkit.org/show_bug.cgi?id=95102
+
+        Reviewed by Dan Bernstein.
+
+        Have forceRepaint() call down to the tiled backing of each FrameView,
+        so they can repaint.
+
+        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
+        (WebKit::TiledCoreAnimationDrawingArea::forceRepaint):
+
 2012-08-27  Rafael Brandao  <[email protected]>
 
         [Qt] Fix typo in CoordinatedGraphicsLayer::syncAnimatedProperties

Modified: trunk/Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm (126776 => 126777)


--- trunk/Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm	2012-08-27 18:05:44 UTC (rev 126776)
+++ trunk/Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm	2012-08-27 18:36:29 UTC (rev 126777)
@@ -49,6 +49,7 @@
 #import <WebCore/ScrollingThread.h>
 #import <WebCore/ScrollingTree.h>
 #import <WebCore/Settings.h>
+#import <WebCore/TiledBacking.h>
 #import <wtf/MainThread.h>
 
 @interface CATransaction (Details)
@@ -134,6 +135,14 @@
     if (m_layerTreeStateIsFrozen)
         return;
 
+    for (Frame* frame = m_webPage->corePage()->mainFrame(); frame; frame = frame->tree()->traverseNext()) {
+        FrameView* frameView = frame->view();
+        if (!frameView || !frameView->tiledBacking())
+            continue;
+
+        frameView->tiledBacking()->forceRepaint();
+    }
+
     flushLayers();
     [CATransaction flush];
     [CATransaction synchronize];
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to