Diff
Modified: trunk/Source/WebCore/ChangeLog (97921 => 97922)
--- trunk/Source/WebCore/ChangeLog 2011-10-20 02:15:07 UTC (rev 97921)
+++ trunk/Source/WebCore/ChangeLog 2011-10-20 02:23:32 UTC (rev 97922)
@@ -1,3 +1,25 @@
+2011-10-19 Nat Duca <[email protected]>
+
+ [chromium] Route requestAnimationFrame through CCProxy in threaded mode
+ https://bugs.webkit.org/show_bug.cgi?id=70160
+
+ Reviewed by James Robinson.
+
+ * platform/graphics/chromium/cc/CCLayerTreeHost.cpp:
+ (WebCore::CCLayerTreeHost::setNeedsAnimate):
+ * platform/graphics/chromium/cc/CCLayerTreeHost.h:
+ * platform/graphics/chromium/cc/CCProxy.h:
+ * platform/graphics/chromium/cc/CCScheduler.cpp:
+ (WebCore::CCScheduler::requestAnimate):
+ * platform/graphics/chromium/cc/CCScheduler.h:
+ * platform/graphics/chromium/cc/CCSingleThreadProxy.cpp:
+ (WebCore::CCSingleThreadProxy::setNeedsAnimate):
+ * platform/graphics/chromium/cc/CCSingleThreadProxy.h:
+ * platform/graphics/chromium/cc/CCThreadProxy.cpp:
+ (WebCore::CCThreadProxy::setNeedsAnimate):
+ (WebCore::CCThreadProxy::setNeedsAnimateOnCCThread):
+ * platform/graphics/chromium/cc/CCThreadProxy.h:
+
2011-10-19 Kent Tamura <[email protected]>
Reject invalid MIME type strings for a file selection dialog parameter
Modified: trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp (97921 => 97922)
--- trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp 2011-10-20 02:15:07 UTC (rev 97921)
+++ trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp 2011-10-20 02:23:32 UTC (rev 97922)
@@ -195,6 +195,12 @@
setNeedsCommitThenRedraw();
}
+void CCLayerTreeHost::setNeedsAnimate()
+{
+ ASSERT(m_settings.enableCompositorThread);
+ m_proxy->setNeedsAnimate();
+}
+
void CCLayerTreeHost::setNeedsCommitThenRedraw()
{
if (m_settings.enableCompositorThread) {
Modified: trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.h (97921 => 97922)
--- trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.h 2011-10-20 02:15:07 UTC (rev 97921)
+++ trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.h 2011-10-20 02:23:32 UTC (rev 97922)
@@ -134,6 +134,7 @@
// Test-only hook
void loseCompositorContext(int numTimes);
+ void setNeedsAnimate();
void setNeedsCommitThenRedraw();
void setNeedsRedraw();
Modified: trunk/Source/WebCore/platform/graphics/chromium/cc/CCProxy.h (97921 => 97922)
--- trunk/Source/WebCore/platform/graphics/chromium/cc/CCProxy.h 2011-10-20 02:15:07 UTC (rev 97921)
+++ trunk/Source/WebCore/platform/graphics/chromium/cc/CCProxy.h 2011-10-20 02:23:32 UTC (rev 97922)
@@ -64,6 +64,7 @@
virtual const LayerRendererCapabilities& layerRendererCapabilities() const = 0;
+ virtual void setNeedsAnimate() = 0;
virtual void setNeedsCommit() = 0;
virtual void setNeedsCommitThenRedraw() = 0;
virtual void setNeedsRedraw() = 0;
Modified: trunk/Source/WebCore/platform/graphics/chromium/cc/CCScheduler.cpp (97921 => 97922)
--- trunk/Source/WebCore/platform/graphics/chromium/cc/CCScheduler.cpp 2011-10-20 02:15:07 UTC (rev 97921)
+++ trunk/Source/WebCore/platform/graphics/chromium/cc/CCScheduler.cpp 2011-10-20 02:23:32 UTC (rev 97922)
@@ -36,6 +36,12 @@
ASSERT(m_client);
}
+void CCScheduler::requestAnimate()
+{
+ // Stub through to requestCommit for now.
+ requestCommit();
+}
+
void CCScheduler::requestCommit()
{
if (m_commitPending)
@@ -66,4 +72,3 @@
}
}
-
Modified: trunk/Source/WebCore/platform/graphics/chromium/cc/CCScheduler.h (97921 => 97922)
--- trunk/Source/WebCore/platform/graphics/chromium/cc/CCScheduler.h 2011-10-20 02:15:07 UTC (rev 97921)
+++ trunk/Source/WebCore/platform/graphics/chromium/cc/CCScheduler.h 2011-10-20 02:23:32 UTC (rev 97922)
@@ -49,6 +49,7 @@
return adoptPtr(new CCScheduler(client));
}
+ void requestAnimate();
void requestCommit();
void requestRedraw();
Modified: trunk/Source/WebCore/platform/graphics/chromium/cc/CCSingleThreadProxy.cpp (97921 => 97922)
--- trunk/Source/WebCore/platform/graphics/chromium/cc/CCSingleThreadProxy.cpp 2011-10-20 02:15:07 UTC (rev 97921)
+++ trunk/Source/WebCore/platform/graphics/chromium/cc/CCSingleThreadProxy.cpp 2011-10-20 02:23:32 UTC (rev 97922)
@@ -138,6 +138,12 @@
m_timesRecreateShouldFail = numTimes - 1;
}
+void CCSingleThreadProxy::setNeedsAnimate()
+{
+ // CCThread-only feature
+ ASSERT_NOT_REACHED();
+}
+
void CCSingleThreadProxy::setNeedsCommit()
{
ASSERT(CCProxy::isMainThread());
Modified: trunk/Source/WebCore/platform/graphics/chromium/cc/CCSingleThreadProxy.h (97921 => 97922)
--- trunk/Source/WebCore/platform/graphics/chromium/cc/CCSingleThreadProxy.h 2011-10-20 02:15:07 UTC (rev 97921)
+++ trunk/Source/WebCore/platform/graphics/chromium/cc/CCSingleThreadProxy.h 2011-10-20 02:23:32 UTC (rev 97922)
@@ -48,6 +48,7 @@
virtual int compositorIdentifier() const { return m_compositorIdentifier; }
virtual const LayerRendererCapabilities& layerRendererCapabilities() const;
virtual void loseCompositorContext(int numTimes);
+ virtual void setNeedsAnimate();
virtual void setNeedsCommit();
virtual void setNeedsCommitThenRedraw();
virtual void setNeedsRedraw();
Modified: trunk/Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp (97921 => 97922)
--- trunk/Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp 2011-10-20 02:15:07 UTC (rev 97921)
+++ trunk/Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp 2011-10-20 02:23:32 UTC (rev 97922)
@@ -239,6 +239,18 @@
ASSERT_NOT_REACHED();
}
+void CCThreadProxy::setNeedsAnimate()
+{
+ ASSERT(isMainThread());
+ if (m_commitRequested)
+ return;
+
+ TRACE_EVENT("CCThreadProxy::setNeedsAnimation", this, 0);
+ m_commitRequested = true;
+ s_ccThread->postTask(createCCThreadTask(this, &CCThreadProxy::setNeedsAnimateOnCCThread));
+}
+
+
void CCThreadProxy::setNeedsCommit()
{
ASSERT(isMainThread());
@@ -257,6 +269,13 @@
setNeedsCommit();
}
+void CCThreadProxy::setNeedsAnimateOnCCThread()
+{
+ ASSERT(isImplThread());
+ TRACE_EVENT("CCThreadProxy::setNeedsCommitOnCCThread", this, 0);
+ m_schedulerOnCCThread->requestAnimate();
+}
+
void CCThreadProxy::setNeedsCommitOnCCThread()
{
ASSERT(isImplThread());
Modified: trunk/Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.h (97921 => 97922)
--- trunk/Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.h 2011-10-20 02:15:07 UTC (rev 97921)
+++ trunk/Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.h 2011-10-20 02:23:32 UTC (rev 97922)
@@ -60,6 +60,7 @@
virtual int compositorIdentifier() const;
virtual const LayerRendererCapabilities& layerRendererCapabilities() const;
virtual void loseCompositorContext(int numTimes);
+ virtual void setNeedsAnimate();
virtual void setNeedsCommit();
virtual void setNeedsCommitThenRedraw();
virtual void setNeedsRedraw();
@@ -83,12 +84,14 @@
void finishAllRenderingOnCCThread(CCCompletionEvent*);
void initializeImplOnCCThread(CCCompletionEvent*);
void initializeLayerRendererOnCCThread(GraphicsContext3D*, CCCompletionEvent*, bool* initializeSucceeded, LayerRendererCapabilities*, int* compositorIdentifier);
+ void setNeedsAnimateOnCCThread();
void setNeedsCommitOnCCThread();
void setNeedsRedrawOnCCThread();
void setNeedsCommitThenRedrawOnCCThread();
void layerTreeHostClosedOnCCThread(CCCompletionEvent*);
// Accessed on main thread only.
+ bool m_animationRequested;
bool m_commitRequested;
bool m_redrawAfterCommit;
CCLayerTreeHost* m_layerTreeHost;
Modified: trunk/Source/WebKit/chromium/ChangeLog (97921 => 97922)
--- trunk/Source/WebKit/chromium/ChangeLog 2011-10-20 02:15:07 UTC (rev 97921)
+++ trunk/Source/WebKit/chromium/ChangeLog 2011-10-20 02:23:32 UTC (rev 97922)
@@ -1,3 +1,16 @@
+2011-10-19 Nat Duca <[email protected]>
+
+ [chromium] Route requestAnimationFrame through CCProxy in threaded mode
+ https://bugs.webkit.org/show_bug.cgi?id=70160
+
+ Reviewed by James Robinson.
+
+ * src/ChromeClientImpl.cpp:
+ (WebKit::ChromeClientImpl::scheduleAnimation):
+ * src/WebViewImpl.cpp:
+ (WebKit::WebViewImpl::scheduleAnimation):
+ * src/WebViewImpl.h:
+
2011-10-19 Nico Weber <[email protected]>
[chromium/mac] Use clang as compiler!
Modified: trunk/Source/WebKit/chromium/src/ChromeClientImpl.cpp (97921 => 97922)
--- trunk/Source/WebKit/chromium/src/ChromeClientImpl.cpp 2011-10-20 02:15:07 UTC (rev 97921)
+++ trunk/Source/WebKit/chromium/src/ChromeClientImpl.cpp 2011-10-20 02:23:32 UTC (rev 97922)
@@ -535,7 +535,7 @@
#if ENABLE(REQUEST_ANIMATION_FRAME)
void ChromeClientImpl::scheduleAnimation()
{
- m_webView->client()->scheduleAnimation();
+ m_webView->scheduleAnimation();
}
#endif
Modified: trunk/Source/WebKit/chromium/src/WebViewImpl.cpp (97921 => 97922)
--- trunk/Source/WebKit/chromium/src/WebViewImpl.cpp 2011-10-20 02:15:07 UTC (rev 97921)
+++ trunk/Source/WebKit/chromium/src/WebViewImpl.cpp 2011-10-20 02:23:32 UTC (rev 97922)
@@ -2608,6 +2608,19 @@
m_nonCompositedContentHost->invalidateRect(dirtyRect);
setRootLayerNeedsDisplay();
}
+#if ENABLE(REQUEST_ANIMATION_FRAME)
+void WebViewImpl::scheduleAnimation()
+{
+ if (isAcceleratedCompositingActive()) {
+ if (settings()->useThreadedCompositor()) {
+ ASSERT(m_layerTreeHost);
+ m_layerTreeHost->setNeedsAnimate();
+ } else
+ m_client->scheduleAnimation();
+ } else
+ m_client->scheduleAnimation();
+}
+#endif
class WebViewImplContentPainter : public LayerPainterChromium {
WTF_MAKE_NONCOPYABLE(WebViewImplContentPainter);
Modified: trunk/Source/WebKit/chromium/src/WebViewImpl.h (97921 => 97922)
--- trunk/Source/WebKit/chromium/src/WebViewImpl.h 2011-10-20 02:15:07 UTC (rev 97921)
+++ trunk/Source/WebKit/chromium/src/WebViewImpl.h 2011-10-20 02:23:32 UTC (rev 97922)
@@ -384,8 +384,10 @@
void setRootLayerNeedsDisplay();
void scrollRootLayerRect(const WebCore::IntSize& scrollDelta, const WebCore::IntRect& clipRect);
void invalidateRootLayerRect(const WebCore::IntRect&);
- void doUpdateAndComposite();
#endif
+#if ENABLE(REQUEST_ANIMATION_FRAME)
+ void scheduleAnimation();
+#endif
// Returns the onscreen 3D context used by the compositor. This is
// used by the renderer's code to set up resource sharing between