[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc

simon.fraser at apple.com simon.fraser at apple.com
Wed Dec 22 13:56:07 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit 17e5cf89d44e5e0ed0eee49e09d16584f7f76a72
Author: simon.fraser at apple.com <simon.fraser at apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Thu Sep 30 00:10:24 2010 +0000

    2010-09-29  Simon Fraser  <simon.fraser at apple.com>
    
            Reviewed by Anders Carlsson.
    
            Assertion then crash closing WebKit2 window with accelerated compositing in
            https://bugs.webkit.org/show_bug.cgi?id=46857
    
            Fix two issues when closing a WebKit2 window using accelerated
            compositing.
    
            The first is that the response to the sync DidChangeAcceleratedCompositing message
            sent by changeAcceleratedCompositingMode() may be empty, because the corresponding
            page may have been destroyed already in the UI process. In that case newDrawingAreaInfo
            is not filled in, so we get a DrawingArea::Type of None. Don't attempt to make a new
            drawing area in that case.
    
            We then have to null-check the drawing area in WebPage::didReceiveMessage(),
            in the case where the UI process is calling back with a SuspendPainting message,
            before our page has gone away.
    
            * WebProcess/WebPage/WebPage.cpp:
            (WebKit::WebPage::changeAcceleratedCompositingMode):
            (WebKit::WebPage::didReceiveMessage):
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@68726 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebKit2/ChangeLog b/WebKit2/ChangeLog
index f0a3c06..91935e7 100644
--- a/WebKit2/ChangeLog
+++ b/WebKit2/ChangeLog
@@ -1,3 +1,27 @@
+2010-09-29  Simon Fraser  <simon.fraser at apple.com>
+
+        Reviewed by Anders Carlsson.
+
+        Assertion then crash closing WebKit2 window with accelerated compositing in
+        https://bugs.webkit.org/show_bug.cgi?id=46857
+        
+        Fix two issues when closing a WebKit2 window using accelerated
+        compositing.
+        
+        The first is that the response to the sync DidChangeAcceleratedCompositing message
+        sent by changeAcceleratedCompositingMode() may be empty, because the corresponding
+        page may have been destroyed already in the UI process. In that case newDrawingAreaInfo
+        is not filled in, so we get a DrawingArea::Type of None. Don't attempt to make a new
+        drawing area in that case.
+        
+        We then have to null-check the drawing area in WebPage::didReceiveMessage(),
+        in the case where the UI process is calling back with a SuspendPainting message,
+        before our page has gone away.
+        
+        * WebProcess/WebPage/WebPage.cpp:
+        (WebKit::WebPage::changeAcceleratedCompositingMode):
+        (WebKit::WebPage::didReceiveMessage):
+
 2010-09-29  Anders Carlsson  <andersca at apple.com>
 
         Reviewed by Sam Weinig.
diff --git a/WebKit2/WebProcess/WebPage/WebPage.cpp b/WebKit2/WebProcess/WebPage/WebPage.cpp
index e9d5520..2d0cedd 100644
--- a/WebKit2/WebProcess/WebPage/WebPage.cpp
+++ b/WebKit2/WebProcess/WebPage/WebPage.cpp
@@ -252,8 +252,11 @@ void WebPage::changeAcceleratedCompositingMode(WebCore::GraphicsLayer* layer)
                                                 CoreIPC::Connection::NoTimeout);
     
     if (newDrawingAreaInfo.type != drawingArea()->info().type) {
-        m_drawingArea = DrawingArea::create(newDrawingAreaInfo.type, newDrawingAreaInfo.id, this);
-        m_drawingArea->setNeedsDisplay(IntRect(IntPoint(0, 0), m_viewSize));
+        m_drawingArea = 0;
+        if (newDrawingAreaInfo.type != DrawingArea::None) {
+            m_drawingArea = DrawingArea::create(newDrawingAreaInfo.type, newDrawingAreaInfo.id, this);
+            m_drawingArea->setNeedsDisplay(IntRect(IntPoint(0, 0), m_viewSize));
+        }
     }
 }
 
@@ -801,8 +804,8 @@ bool WebPage::windowIsFocused() const
 void WebPage::didReceiveMessage(CoreIPC::Connection* connection, CoreIPC::MessageID messageID, CoreIPC::ArgumentDecoder* arguments)
 {
     if (messageID.is<CoreIPC::MessageClassDrawingArea>()) {
-        ASSERT(m_drawingArea);
-        m_drawingArea->didReceiveMessage(connection, messageID, arguments);
+        if (m_drawingArea)
+            m_drawingArea->didReceiveMessage(connection, messageID, arguments);
         return;
     }
 

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list