Title: [106935] trunk/Source
Revision
106935
Author
commit-qu...@webkit.org
Date
2012-02-07 07:16:55 -0800 (Tue, 07 Feb 2012)

Log Message

[chromium] Add setNeedsRedraw to WebWidget
https://bugs.webkit.org/show_bug.cgi?id=77555

Patch by Jonathan Backer <bac...@chromium.org> on 2012-02-07
Reviewed by James Robinson.

Source/WebCore:

* platform/graphics/chromium/cc/CCLayerTreeHost.cpp:
(WebCore::CCLayerTreeHost::setNeedsRedraw):
* platform/graphics/chromium/cc/CCSingleThreadProxy.cpp:
(WebCore::CCSingleThreadProxy::setNeedsRedraw):
* platform/graphics/chromium/cc/CCThreadProxy.cpp:
(WebCore::CCThreadProxy::setNeedsRedraw):
(WebCore::CCThreadProxy::resetDamageTrackerOnImplThread):
(WebCore):
* platform/graphics/chromium/cc/CCThreadProxy.h:
(CCThreadProxy):

Source/WebKit/chromium:

* public/WebWidget.h:
(WebWidget):
(WebKit::WebWidget::setNeedsRedraw):
* src/WebViewImpl.cpp:
(WebKit::WebViewImpl::setNeedsRedraw):
(WebKit):
* src/WebViewImpl.h:
(WebViewImpl):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (106934 => 106935)


--- trunk/Source/WebCore/ChangeLog	2012-02-07 14:52:17 UTC (rev 106934)
+++ trunk/Source/WebCore/ChangeLog	2012-02-07 15:16:55 UTC (rev 106935)
@@ -1,3 +1,21 @@
+2012-02-07  Jonathan Backer  <bac...@chromium.org>
+
+        [chromium] Add setNeedsRedraw to WebWidget
+        https://bugs.webkit.org/show_bug.cgi?id=77555
+
+        Reviewed by James Robinson.
+
+        * platform/graphics/chromium/cc/CCLayerTreeHost.cpp:
+        (WebCore::CCLayerTreeHost::setNeedsRedraw):
+        * platform/graphics/chromium/cc/CCSingleThreadProxy.cpp:
+        (WebCore::CCSingleThreadProxy::setNeedsRedraw):
+        * platform/graphics/chromium/cc/CCThreadProxy.cpp:
+        (WebCore::CCThreadProxy::setNeedsRedraw):
+        (WebCore::CCThreadProxy::resetDamageTrackerOnImplThread):
+        (WebCore):
+        * platform/graphics/chromium/cc/CCThreadProxy.h:
+        (CCThreadProxy):
+
 2012-02-07  Michael BrĂ¼ning  <michael.brun...@nokia.com>
 
         [Qt][WK2] Compute and set cache capacities using the current CacheModel

Modified: trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp (106934 => 106935)


--- trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp	2012-02-07 14:52:17 UTC (rev 106934)
+++ trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp	2012-02-07 15:16:55 UTC (rev 106935)
@@ -251,9 +251,8 @@
 
 void CCLayerTreeHost::setNeedsRedraw()
 {
-    if (CCThreadProxy::implThread())
-        m_proxy->setNeedsRedraw();
-    else
+    m_proxy->setNeedsRedraw();
+    if (!CCThreadProxy::implThread())
         m_client->scheduleComposite();
 }
 

Modified: trunk/Source/WebCore/platform/graphics/chromium/cc/CCSingleThreadProxy.cpp (106934 => 106935)


--- trunk/Source/WebCore/platform/graphics/chromium/cc/CCSingleThreadProxy.cpp	2012-02-07 14:52:17 UTC (rev 106934)
+++ trunk/Source/WebCore/platform/graphics/chromium/cc/CCSingleThreadProxy.cpp	2012-02-07 15:16:55 UTC (rev 106935)
@@ -29,6 +29,7 @@
 #include "GraphicsContext3D.h"
 #include "LayerRendererChromium.h"
 #include "TraceEvent.h"
+#include "cc/CCDamageTracker.h"
 #include "cc/CCLayerTreeHost.h"
 #include "cc/CCTextureUpdater.h"
 #include <wtf/CurrentTime.h>
@@ -194,6 +195,10 @@
 
 void CCSingleThreadProxy::setNeedsRedraw()
 {
+    CCRenderSurface* renderSurface = m_layerTreeHostImpl->rootLayer()->renderSurface();
+    if (renderSurface)
+        renderSurface->damageTracker()->forceFullDamageNextUpdate();
+
     // FIXME: Once we move render_widget scheduling into this class, we can
     // treat redraw requests more efficiently than commitAndRedraw requests.
     setNeedsCommit();

Modified: trunk/Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp (106934 => 106935)


--- trunk/Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp	2012-02-07 14:52:17 UTC (rev 106934)
+++ trunk/Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp	2012-02-07 15:16:55 UTC (rev 106935)
@@ -28,6 +28,7 @@
 
 #include "GraphicsContext3D.h"
 #include "TraceEvent.h"
+#include "cc/CCDamageTracker.h"
 #include "cc/CCDelayBasedTimeSource.h"
 #include "cc/CCFrameRateController.h"
 #include "cc/CCInputHandler.h"
@@ -248,6 +249,7 @@
 {
     ASSERT(isMainThread());
     TRACE_EVENT("CCThreadProxy::setNeedsRedraw", this, 0);
+    CCProxy::implThread()->postTask(createCCThreadTask(this, &CCThreadProxy::resetDamageTrackerOnImplThread));
     CCProxy::implThread()->postTask(createCCThreadTask(this, &CCThreadProxy::setNeedsRedrawOnImplThread));
 }
 
@@ -274,6 +276,14 @@
     completion->signal();
 }
 
+void CCThreadProxy::resetDamageTrackerOnImplThread()
+{
+    ASSERT(isImplThread());
+    CCRenderSurface* renderSurface = m_layerTreeHostImpl->rootLayer()->renderSurface();
+    if (renderSurface)
+        renderSurface->damageTracker()->forceFullDamageNextUpdate();
+}
+
 void CCThreadProxy::setNeedsRedrawOnImplThread()
 {
     ASSERT(isImplThread());

Modified: trunk/Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.h (106934 => 106935)


--- trunk/Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.h	2012-02-07 14:52:17 UTC (rev 106934)
+++ trunk/Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.h	2012-02-07 15:16:55 UTC (rev 106935)
@@ -103,6 +103,7 @@
     void initializeLayerRendererOnImplThread(CCCompletionEvent*, bool* initializeSucceeded, LayerRendererCapabilities*);
     void setVisibleOnImplThread(CCCompletionEvent*, bool visible);
     void layerTreeHostClosedOnImplThread(CCCompletionEvent*);
+    void resetDamageTrackerOnImplThread();
 
     // Accessed on main thread only.
     bool m_animateRequested;

Modified: trunk/Source/WebKit/chromium/ChangeLog (106934 => 106935)


--- trunk/Source/WebKit/chromium/ChangeLog	2012-02-07 14:52:17 UTC (rev 106934)
+++ trunk/Source/WebKit/chromium/ChangeLog	2012-02-07 15:16:55 UTC (rev 106935)
@@ -1,3 +1,19 @@
+2012-02-07  Jonathan Backer  <bac...@chromium.org>
+
+        [chromium] Add setNeedsRedraw to WebWidget
+        https://bugs.webkit.org/show_bug.cgi?id=77555
+
+        Reviewed by James Robinson.
+
+        * public/WebWidget.h:
+        (WebWidget):
+        (WebKit::WebWidget::setNeedsRedraw):
+        * src/WebViewImpl.cpp:
+        (WebKit::WebViewImpl::setNeedsRedraw):
+        (WebKit):
+        * src/WebViewImpl.h:
+        (WebViewImpl):
+
 2012-02-07  Sheriff Bot  <webkit.review....@gmail.com>
 
         Unreviewed.  Rolled DEPS.

Modified: trunk/Source/WebKit/chromium/public/WebWidget.h (106934 => 106935)


--- trunk/Source/WebKit/chromium/public/WebWidget.h	2012-02-07 14:52:17 UTC (rev 106934)
+++ trunk/Source/WebKit/chromium/public/WebWidget.h	2012-02-07 15:16:55 UTC (rev 106935)
@@ -107,6 +107,11 @@
     // animate or layout in this case.
     virtual void composite(bool finish) = 0;
 
+    // Temporary method for the embedder to notify the WebWidget that the widget
+    // has taken damage, e.g. due to a window expose. This method will be
+    // removed when the WebWidget inversion patch lands --- http://crbug.com/112837
+    virtual void setNeedsRedraw() { }
+
     // Called to inform the WebWidget of a change in theme.
     // Implementors that cache rendered copies of widgets need to re-render
     // on receiving this message

Modified: trunk/Source/WebKit/chromium/src/WebViewImpl.cpp (106934 => 106935)


--- trunk/Source/WebKit/chromium/src/WebViewImpl.cpp	2012-02-07 14:52:17 UTC (rev 106934)
+++ trunk/Source/WebKit/chromium/src/WebViewImpl.cpp	2012-02-07 15:16:55 UTC (rev 106935)
@@ -1271,6 +1271,14 @@
 #endif
 }
 
+void WebViewImpl::setNeedsRedraw()
+{
+#if USE(ACCELERATED_COMPOSITING)
+    if (m_layerTreeHost && isAcceleratedCompositingActive())
+        m_layerTreeHost->setNeedsRedraw();
+#endif
+}
+
 void WebViewImpl::loseCompositorContext(int numTimes)
 {
 #if USE(ACCELERATED_COMPOSITING)

Modified: trunk/Source/WebKit/chromium/src/WebViewImpl.h (106934 => 106935)


--- trunk/Source/WebKit/chromium/src/WebViewImpl.h	2012-02-07 14:52:17 UTC (rev 106934)
+++ trunk/Source/WebKit/chromium/src/WebViewImpl.h	2012-02-07 15:16:55 UTC (rev 106935)
@@ -113,6 +113,7 @@
     virtual void paint(WebCanvas*, const WebRect&);
     virtual void themeChanged();
     virtual void composite(bool finish);
+    virtual void setNeedsRedraw();
     virtual bool handleInputEvent(const WebInputEvent&);
     virtual void mouseCaptureLost();
     virtual void setFocus(bool enable);
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to