Title: [134278] trunk/Source/WebKit2
- Revision
- 134278
- Author
- [email protected]
- Date
- 2012-11-12 12:14:48 -0800 (Mon, 12 Nov 2012)
Log Message
More work on remote layer flushing
https://bugs.webkit.org/show_bug.cgi?id=101960
Reviewed by Andreas Kling.
* WebProcess/WebPage/mac/RemoteGraphicsLayer.h:
* WebProcess/WebPage/mac/RemoteGraphicsLayer.mm:
(WebKit::RemoteGraphicsLayer::flushCompositingState):
Call recursiveCommitChanges.
(WebKit::RemoteGraphicsLayer::flushCompositingStateForThisLayerOnly):
Add stub function for now.
(WebKit::RemoteGraphicsLayer::recursiveCommitChanges):
Call flushCompositingStateForThisLayerOnly and then call recursiveCommitChanges recursively on all the child layers.
* WebProcess/WebPage/mac/RemoteLayerTreeController.h:
* WebProcess/WebPage/mac/RemoteLayerTreeController.mm:
(WebKit::RemoteLayerTreeController::create):
(WebKit::RemoteLayerTreeController::RemoteLayerTreeController):
This now takes a web page.
(WebKit::RemoteLayerTreeController::setRootLayer):
Add empty function.
(WebKit::RemoteLayerTreeController::layerFlushTimerFired):
Call flushLayers explicitly.
(WebKit::RemoteLayerTreeController::flushLayers):
Force a layout and then sync all the compositing layers.
* WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm:
(WebKit::RemoteLayerTreeDrawingArea::RemoteLayerTreeDrawingArea):
RemoteLayerTreeController::create now takes a web page.
(WebKit::RemoteLayerTreeDrawingArea::setRootCompositingLayer):
Call the remote layer tree controller.
Modified Paths
Diff
Modified: trunk/Source/WebKit2/ChangeLog (134277 => 134278)
--- trunk/Source/WebKit2/ChangeLog 2012-11-12 20:08:27 UTC (rev 134277)
+++ trunk/Source/WebKit2/ChangeLog 2012-11-12 20:14:48 UTC (rev 134278)
@@ -1,5 +1,45 @@
2012-11-12 Anders Carlsson <[email protected]>
+ More work on remote layer flushing
+ https://bugs.webkit.org/show_bug.cgi?id=101960
+
+ Reviewed by Andreas Kling.
+
+ * WebProcess/WebPage/mac/RemoteGraphicsLayer.h:
+ * WebProcess/WebPage/mac/RemoteGraphicsLayer.mm:
+ (WebKit::RemoteGraphicsLayer::flushCompositingState):
+ Call recursiveCommitChanges.
+
+ (WebKit::RemoteGraphicsLayer::flushCompositingStateForThisLayerOnly):
+ Add stub function for now.
+
+ (WebKit::RemoteGraphicsLayer::recursiveCommitChanges):
+ Call flushCompositingStateForThisLayerOnly and then call recursiveCommitChanges recursively on all the child layers.
+
+ * WebProcess/WebPage/mac/RemoteLayerTreeController.h:
+ * WebProcess/WebPage/mac/RemoteLayerTreeController.mm:
+ (WebKit::RemoteLayerTreeController::create):
+ (WebKit::RemoteLayerTreeController::RemoteLayerTreeController):
+ This now takes a web page.
+
+ (WebKit::RemoteLayerTreeController::setRootLayer):
+ Add empty function.
+
+ (WebKit::RemoteLayerTreeController::layerFlushTimerFired):
+ Call flushLayers explicitly.
+
+ (WebKit::RemoteLayerTreeController::flushLayers):
+ Force a layout and then sync all the compositing layers.
+
+ * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm:
+ (WebKit::RemoteLayerTreeDrawingArea::RemoteLayerTreeDrawingArea):
+ RemoteLayerTreeController::create now takes a web page.
+
+ (WebKit::RemoteLayerTreeDrawingArea::setRootCompositingLayer):
+ Call the remote layer tree controller.
+
+2012-11-12 Anders Carlsson <[email protected]>
+
Layer property changes should schedule a remote layer flush
https://bugs.webkit.org/show_bug.cgi?id=101951
Modified: trunk/Source/WebKit2/WebProcess/WebPage/mac/RemoteGraphicsLayer.h (134277 => 134278)
--- trunk/Source/WebKit2/WebProcess/WebPage/mac/RemoteGraphicsLayer.h 2012-11-12 20:08:27 UTC (rev 134277)
+++ trunk/Source/WebKit2/WebProcess/WebPage/mac/RemoteGraphicsLayer.h 2012-11-12 20:14:48 UTC (rev 134278)
@@ -44,8 +44,11 @@
virtual void setName(const String&) OVERRIDE;
virtual void setNeedsDisplay() OVERRIDE;
virtual void setNeedsDisplayInRect(const WebCore::FloatRect&) OVERRIDE;
+ virtual void flushCompositingState(const WebCore::FloatRect&) OVERRIDE;
+ virtual void flushCompositingStateForThisLayerOnly() OVERRIDE;
void noteLayerPropertiesChanged(unsigned layerChanges);
+ void recursiveCommitChanges();
RemoteLayerTreeController* m_controller;
Modified: trunk/Source/WebKit2/WebProcess/WebPage/mac/RemoteGraphicsLayer.mm (134277 => 134278)
--- trunk/Source/WebKit2/WebProcess/WebPage/mac/RemoteGraphicsLayer.mm 2012-11-12 20:08:27 UTC (rev 134277)
+++ trunk/Source/WebKit2/WebProcess/WebPage/mac/RemoteGraphicsLayer.mm 2012-11-12 20:14:48 UTC (rev 134278)
@@ -73,6 +73,16 @@
// FIXME: Implement this.
}
+void RemoteGraphicsLayer::flushCompositingState(const FloatRect&)
+{
+ recursiveCommitChanges();
+}
+
+void RemoteGraphicsLayer::flushCompositingStateForThisLayerOnly()
+{
+ // FIXME: Flush the changed properties.
+}
+
void RemoteGraphicsLayer::noteLayerPropertiesChanged(unsigned layerChanges)
{
if (!m_uncommittedLayerChanges && m_client)
@@ -80,4 +90,14 @@
m_uncommittedLayerChanges |= layerChanges;
}
+void RemoteGraphicsLayer::recursiveCommitChanges()
+{
+ flushCompositingStateForThisLayerOnly();
+
+ for (size_t i = 0; i < children().size(); ++i) {
+ RemoteGraphicsLayer* graphicsLayer = static_cast<RemoteGraphicsLayer*>(children()[i]);
+ graphicsLayer->recursiveCommitChanges();
+ }
+}
+
} // namespace WebKit
Modified: trunk/Source/WebKit2/WebProcess/WebPage/mac/RemoteLayerTreeController.h (134277 => 134278)
--- trunk/Source/WebKit2/WebProcess/WebPage/mac/RemoteLayerTreeController.h 2012-11-12 20:08:27 UTC (rev 134277)
+++ trunk/Source/WebKit2/WebProcess/WebPage/mac/RemoteLayerTreeController.h 2012-11-12 20:14:48 UTC (rev 134278)
@@ -31,21 +31,26 @@
namespace WebKit {
+class WebPage;
+
class RemoteLayerTreeController : public WebCore::GraphicsLayerFactory {
public:
- static PassOwnPtr<RemoteLayerTreeController> create();
+ static PassOwnPtr<RemoteLayerTreeController> create(WebPage*);
~RemoteLayerTreeController();
+ void setRootLayer(WebCore::GraphicsLayer*);
void scheduleLayerFlush();
private:
- RemoteLayerTreeController();
+ explicit RemoteLayerTreeController(WebPage*);
// WebCore::GraphicsLayerFactory
virtual PassOwnPtr<WebCore::GraphicsLayer> createGraphicsLayer(WebCore::GraphicsLayerClient*) OVERRIDE;
void layerFlushTimerFired(WebCore::Timer<RemoteLayerTreeController>*);
+ void flushLayers();
+ WebPage* m_webPage;
WebCore::Timer<RemoteLayerTreeController> m_layerFlushTimer;
};
Modified: trunk/Source/WebKit2/WebProcess/WebPage/mac/RemoteLayerTreeController.mm (134277 => 134278)
--- trunk/Source/WebKit2/WebProcess/WebPage/mac/RemoteLayerTreeController.mm 2012-11-12 20:08:27 UTC (rev 134277)
+++ trunk/Source/WebKit2/WebProcess/WebPage/mac/RemoteLayerTreeController.mm 2012-11-12 20:14:48 UTC (rev 134278)
@@ -27,19 +27,24 @@
#import "RemoteLayerTreeController.h"
#import "RemoteGraphicsLayer.h"
+#import "WebPage.h"
+#import <WebCore/Frame.h>
+#import <WebCore/FrameView.h>
+#import <WebCore/Page.h>
#import <wtf/PassOwnPtr.h>
using namespace WebCore;
namespace WebKit {
-PassOwnPtr<RemoteLayerTreeController> RemoteLayerTreeController::create()
+PassOwnPtr<RemoteLayerTreeController> RemoteLayerTreeController::create(WebPage* webPage)
{
- return adoptPtr(new RemoteLayerTreeController);
+ return adoptPtr(new RemoteLayerTreeController(webPage));
}
-RemoteLayerTreeController::RemoteLayerTreeController()
- : m_layerFlushTimer(this, &RemoteLayerTreeController::layerFlushTimerFired)
+RemoteLayerTreeController::RemoteLayerTreeController(WebPage* webPage)
+ : m_webPage(webPage)
+ , m_layerFlushTimer(this, &RemoteLayerTreeController::layerFlushTimerFired)
{
}
@@ -47,6 +52,10 @@
{
}
+void RemoteLayerTreeController::setRootLayer(GraphicsLayer* rootLayer)
+{
+}
+
void RemoteLayerTreeController::scheduleLayerFlush()
{
if (m_layerFlushTimer.isActive())
@@ -62,6 +71,14 @@
void RemoteLayerTreeController::layerFlushTimerFired(WebCore::Timer<RemoteLayerTreeController>*)
{
+ flushLayers();
+}
+
+void RemoteLayerTreeController::flushLayers()
+{
+ m_webPage->layoutIfNeeded();
+ m_webPage->corePage()->mainFrame()->view()->flushCompositingStateIncludingSubframes();
+
// FIXME: Package up the transaction and send it to the UI process.
}
Modified: trunk/Source/WebKit2/WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm (134277 => 134278)
--- trunk/Source/WebKit2/WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm 2012-11-12 20:08:27 UTC (rev 134277)
+++ trunk/Source/WebKit2/WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm 2012-11-12 20:14:48 UTC (rev 134278)
@@ -39,7 +39,7 @@
RemoteLayerTreeDrawingArea::RemoteLayerTreeDrawingArea(WebPage* webPage, const WebPageCreationParameters&)
: DrawingArea(DrawingAreaTypeRemoteLayerTree, webPage)
- , m_remoteLayerTreeController(RemoteLayerTreeController::create())
+ , m_remoteLayerTreeController(RemoteLayerTreeController::create(webPage))
{
}
@@ -60,8 +60,9 @@
return m_remoteLayerTreeController.get();
}
-void RemoteLayerTreeDrawingArea::setRootCompositingLayer(GraphicsLayer*)
+void RemoteLayerTreeDrawingArea::setRootCompositingLayer(GraphicsLayer* rootLayer)
{
+ m_remoteLayerTreeController->setRootLayer(rootLayer);
}
void RemoteLayerTreeDrawingArea::scheduleCompositingLayerFlush()
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes