[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