2011-02-02 Anders Carlsson <andersca@apple.com>
authorandersca@apple.com <andersca@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 2 Feb 2011 21:49:09 +0000 (21:49 +0000)
committerandersca@apple.com <andersca@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 2 Feb 2011 21:49:09 +0000 (21:49 +0000)
        Reviewed by Sam Weinig.

        The drawing area proxy should keep track of the accelerated compositing state
        https://bugs.webkit.org/show_bug.cgi?id=53624

        * UIProcess/DrawingAreaProxyImpl.cpp:
        (WebKit::DrawingAreaProxyImpl::DrawingAreaProxyImpl):
        Initialize m_isInAcceleratedCompositingMode to false.

        (WebKit::DrawingAreaProxyImpl::paint):
        Don't try to paint if we're in accelerated compositing mode.

        (WebKit::DrawingAreaProxyImpl::didSetSize):
        Bail if we're in accelerated compositing mode.

        (WebKit::DrawingAreaProxyImpl::enterAcceleratedCompositingMode):
        Set m_isInAcceleratedCompositingMode to true, null out the backing store.

        (WebKit::DrawingAreaProxyImpl::exitAcceleratedCompositingMode):
        Set m_isInAcceleratedCompositingMode back to false.

        (WebKit::DrawingAreaProxyImpl::incorporateUpdate):
        Assert that we're not in accelerated compositing mode.

        * UIProcess/DrawingAreaProxyImpl.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@77413 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebKit2/ChangeLog
Source/WebKit2/UIProcess/DrawingAreaProxyImpl.cpp
Source/WebKit2/UIProcess/DrawingAreaProxyImpl.h

index 2acbc8b..02e7c4f 100644 (file)
@@ -1,3 +1,31 @@
+2011-02-02  Anders Carlsson  <andersca@apple.com>
+
+        Reviewed by Sam Weinig.
+
+        The drawing area proxy should keep track of the accelerated compositing state
+        https://bugs.webkit.org/show_bug.cgi?id=53624
+
+        * UIProcess/DrawingAreaProxyImpl.cpp:
+        (WebKit::DrawingAreaProxyImpl::DrawingAreaProxyImpl):
+        Initialize m_isInAcceleratedCompositingMode to false.
+
+        (WebKit::DrawingAreaProxyImpl::paint):
+        Don't try to paint if we're in accelerated compositing mode.
+
+        (WebKit::DrawingAreaProxyImpl::didSetSize):
+        Bail if we're in accelerated compositing mode.
+
+        (WebKit::DrawingAreaProxyImpl::enterAcceleratedCompositingMode):
+        Set m_isInAcceleratedCompositingMode to true, null out the backing store.
+
+        (WebKit::DrawingAreaProxyImpl::exitAcceleratedCompositingMode):
+        Set m_isInAcceleratedCompositingMode back to false.
+
+        (WebKit::DrawingAreaProxyImpl::incorporateUpdate):
+        Assert that we're not in accelerated compositing mode.
+
+        * UIProcess/DrawingAreaProxyImpl.h:
+
 2011-02-02  Timothy Hatcher  <timothy@apple.com>
 
         Give the Web Process access to the Safari RSS preferences.
index 26ae44e..e47de04 100644 (file)
@@ -50,6 +50,7 @@ PassOwnPtr<DrawingAreaProxyImpl> DrawingAreaProxyImpl::create(WebPageProxy* webP
 DrawingAreaProxyImpl::DrawingAreaProxyImpl(WebPageProxy* webPageProxy)
     : DrawingAreaProxy(DrawingAreaInfo::Impl, webPageProxy)
     , m_isWaitingForDidSetSize(false)
+    , m_isInAcceleratedCompositingMode(false)
 {
 }
 
@@ -64,6 +65,8 @@ void DrawingAreaProxyImpl::paint(BackingStore::PlatformGraphicsContext context,
     if (!m_backingStore)
         return;
 
+    ASSERT(!m_isInAcceleratedCompositingMode);
+
     if (m_isWaitingForDidSetSize) {
         if (!m_webPageProxy->isValid())
             return;
@@ -142,23 +145,34 @@ void DrawingAreaProxyImpl::didSetSize(const UpdateInfo& updateInfo)
     if (m_size != updateInfo.viewSize)
         sendSetSize();
 
-    m_backingStore = nullptr;
+    if (m_isInAcceleratedCompositingMode)
+        return;
 
+    m_backingStore = nullptr;
     incorporateUpdate(updateInfo);
 }
 
 void DrawingAreaProxyImpl::enterAcceleratedCompositingMode(const LayerTreeContext& layerTreeContext)
 {
+    ASSERT(!m_isInAcceleratedCompositingMode);
+    m_isInAcceleratedCompositingMode = true;
+
+    m_backingStore = nullptr;
     m_webPageProxy->enterAcceleratedCompositingMode(layerTreeContext);
 }
 
 void DrawingAreaProxyImpl::exitAcceleratedCompositingMode()
 {
+    ASSERT(m_isInAcceleratedCompositingMode);
+    m_isInAcceleratedCompositingMode = false;
+
     m_webPageProxy->exitAcceleratedCompositingMode();
 }
 
 void DrawingAreaProxyImpl::incorporateUpdate(const UpdateInfo& updateInfo)
 {
+    ASSERT(!m_isInAcceleratedCompositingMode);
+
     if (updateInfo.updateRectBounds.isEmpty())
         return;
 
index 870a20b..c7c6d92 100644 (file)
@@ -66,6 +66,9 @@ private:
     // Used to throttle SetSize messages so we don't send them faster than the Web process can handle.
     bool m_isWaitingForDidSetSize;
 
+    // Whether we're in accelerated compositing mode or not.
+    bool m_isInAcceleratedCompositingMode;
+
     OwnPtr<BackingStore> m_backingStore;
 };