2010-12-01 Alexey Marinichev <amarinichev@chromium.org>
authorkbr@google.com <kbr@google.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 1 Dec 2010 23:58:16 +0000 (23:58 +0000)
committerkbr@google.com <kbr@google.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 1 Dec 2010 23:58:16 +0000 (23:58 +0000)
        Reviewed by James Robinson.

        [chromium] renderer does not realize hardware compositing is disabled and crashes
        https://bugs.webkit.org/show_bug.cgi?id=50264

        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::setRootGraphicsLayer): repaint always
        (WebKit::WebViewImpl::setIsAcceleratedCompositingActive): null check
        (WebKit::WebViewImpl::reallocateRenderer):

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

WebKit/chromium/ChangeLog
WebKit/chromium/src/WebViewImpl.cpp

index c908480d3bc9c578430daee0c1f72c14e51c9905..fc4a2aa721160a4e9c5f79f2eeaa1d6826c3de21 100644 (file)
@@ -1,3 +1,15 @@
+2010-12-01  Alexey Marinichev  <amarinichev@chromium.org>
+
+        Reviewed by James Robinson.
+
+        [chromium] renderer does not realize hardware compositing is disabled and crashes
+        https://bugs.webkit.org/show_bug.cgi?id=50264
+
+        * src/WebViewImpl.cpp:
+        (WebKit::WebViewImpl::setRootGraphicsLayer): repaint always
+        (WebKit::WebViewImpl::setIsAcceleratedCompositingActive): null check
+        (WebKit::WebViewImpl::reallocateRenderer):
+
 2010-11-30  Vangelis Kokkevis  <vangelis@chromium.org>
 
         Reviewed by Darin Fisher.
 2010-11-30  Vangelis Kokkevis  <vangelis@chromium.org>
 
         Reviewed by Darin Fisher.
index c6f227ec2bc5f129112069e4334217b9fc8852d5..e44c3741578fa40e74b699cbe2872246de7ef66c 100644 (file)
@@ -2272,17 +2272,15 @@ bool WebViewImpl::allowsAcceleratedCompositing()
 
 void WebViewImpl::setRootGraphicsLayer(WebCore::PlatformLayer* layer)
 {
 
 void WebViewImpl::setRootGraphicsLayer(WebCore::PlatformLayer* layer)
 {
-    bool wasActive = m_isAcceleratedCompositingActive;
     setIsAcceleratedCompositingActive(layer ? true : false);
     if (m_layerRenderer)
         m_layerRenderer->setRootLayer(layer);
     setIsAcceleratedCompositingActive(layer ? true : false);
     if (m_layerRenderer)
         m_layerRenderer->setRootLayer(layer);
-    if (wasActive != m_isAcceleratedCompositingActive) {
-        IntRect damagedRect(0, 0, m_size.width, m_size.height);
-        if (m_isAcceleratedCompositingActive)
-            invalidateRootLayerRect(damagedRect);
-        else
-            m_client->didInvalidateRect(damagedRect);
-    }
+
+    IntRect damagedRect(0, 0, m_size.width, m_size.height);
+    if (m_isAcceleratedCompositingActive)
+        invalidateRootLayerRect(damagedRect);
+    else
+        m_client->didInvalidateRect(damagedRect);
 }
 
 void WebViewImpl::setRootLayerNeedsDisplay()
 }
 
 void WebViewImpl::setRootLayerNeedsDisplay()
@@ -2381,7 +2379,8 @@ void WebViewImpl::setIsAcceleratedCompositingActive(bool active)
 
     if (!active) {
         m_isAcceleratedCompositingActive = false;
 
     if (!active) {
         m_isAcceleratedCompositingActive = false;
-        m_layerRenderer->finish(); // finish all GL rendering before we hide the window?
+        if (m_layerRenderer)
+            m_layerRenderer->finish(); // finish all GL rendering before we hide the window?
         m_client->didActivateAcceleratedCompositing(false);
         return;
     }
         m_client->didActivateAcceleratedCompositing(false);
         return;
     }
@@ -2518,7 +2517,6 @@ void WebViewImpl::reallocateRenderer()
     m_layerRenderer = layerRenderer;
 
     // Enable or disable accelerated compositing and request a refresh.
     m_layerRenderer = layerRenderer;
 
     // Enable or disable accelerated compositing and request a refresh.
-    m_isAcceleratedCompositingActive = false;
     setRootGraphicsLayer(m_layerRenderer ? m_layerRenderer->rootLayer() : 0);
 }
 #endif
     setRootGraphicsLayer(m_layerRenderer ? m_layerRenderer->rootLayer() : 0);
 }
 #endif