[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-10851-g50815da
simon.fraser at apple.com
simon.fraser at apple.com
Wed Dec 22 17:52:39 UTC 2010
The following commit has been merged in the debian/experimental branch:
commit 7afb239ab49f30a89d6ea364d93d62e58f15915e
Author: simon.fraser at apple.com <simon.fraser at apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Wed Dec 1 23:04:01 2010 +0000
2010-12-01 Simon Fraser <simon.fraser at apple.com>
Reviewed by Anders Carlsson.
Size changes on layer-backed drawing areas don't always end up with the correct value
https://bugs.webkit.org/show_bug.cgi?id=50351
<rdar://problem/8692966>
When the UI process does not receive didSetSize messages promptly,
LayerBackedDrawingAreaProxy::setSize() bails early based on the
m_isWaitingForDidSetFrameNotification flag.
In this situation, the final size may be incorrect. didSetSize()
needs to compare the size that the web process has to the expected size,
and send a final setSize if they differ.
* UIProcess/LayerBackedDrawingAreaProxy.cpp:
(WebKit::LayerBackedDrawingAreaProxy::didSetSize):
(WebKit::LayerBackedDrawingAreaProxy::didReceiveMessage):
* UIProcess/LayerBackedDrawingAreaProxy.h:
* WebProcess/WebPage/LayerBackedDrawingArea.cpp:
(WebKit::LayerBackedDrawingArea::setSize):
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@73073 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebKit2/ChangeLog b/WebKit2/ChangeLog
index 6ff85c1..34c676c 100644
--- a/WebKit2/ChangeLog
+++ b/WebKit2/ChangeLog
@@ -184,6 +184,29 @@
Reviewed by Anders Carlsson.
+ Size changes on layer-backed drawing areas don't always end up with the correct value
+ https://bugs.webkit.org/show_bug.cgi?id=50351
+ <rdar://problem/8692966>
+
+ When the UI process does not receive didSetSize messages promptly,
+ LayerBackedDrawingAreaProxy::setSize() bails early based on the
+ m_isWaitingForDidSetFrameNotification flag.
+
+ In this situation, the final size may be incorrect. didSetSize()
+ needs to compare the size that the web process has to the expected size,
+ and send a final setSize if they differ.
+
+ * UIProcess/LayerBackedDrawingAreaProxy.cpp:
+ (WebKit::LayerBackedDrawingAreaProxy::didSetSize):
+ (WebKit::LayerBackedDrawingAreaProxy::didReceiveMessage):
+ * UIProcess/LayerBackedDrawingAreaProxy.h:
+ * WebProcess/WebPage/LayerBackedDrawingArea.cpp:
+ (WebKit::LayerBackedDrawingArea::setSize):
+
+2010-12-01 Simon Fraser <simon.fraser at apple.com>
+
+ Reviewed by Anders Carlsson.
+
Crash when closing WebKit2 window with accelerated composting content
https://bugs.webkit.org/show_bug.cgi?id=50307
<rdar://problem/8640126>
diff --git a/WebKit2/UIProcess/LayerBackedDrawingAreaProxy.cpp b/WebKit2/UIProcess/LayerBackedDrawingAreaProxy.cpp
index 9e709cf..00954df 100644
--- a/WebKit2/UIProcess/LayerBackedDrawingAreaProxy.cpp
+++ b/WebKit2/UIProcess/LayerBackedDrawingAreaProxy.cpp
@@ -78,6 +78,7 @@ void LayerBackedDrawingAreaProxy::setSize(const IntSize& viewSize)
if (m_isWaitingForDidSetFrameNotification)
return;
+
m_isWaitingForDidSetFrameNotification = true;
page->process()->responsivenessTimer()->start();
@@ -113,10 +114,13 @@ void LayerBackedDrawingAreaProxy::setPageIsVisible(bool isVisible)
// FIXME: We should request a full repaint here if needed.
}
-void LayerBackedDrawingAreaProxy::didSetSize()
+void LayerBackedDrawingAreaProxy::didSetSize(const IntSize& size)
{
m_isWaitingForDidSetFrameNotification = false;
+ if (size != m_lastSetViewSize)
+ setSize(m_lastSetViewSize);
+
WebPageProxy* page = this->page();
page->process()->responsivenessTimer()->stop();
}
@@ -135,7 +139,10 @@ void LayerBackedDrawingAreaProxy::didReceiveMessage(CoreIPC::Connection*, CoreIP
break;
}
case DrawingAreaProxyMessage::DidSetSize: {
- didSetSize();
+ IntSize size;
+ if (!arguments->decode(CoreIPC::Out(size)))
+ return;
+ didSetSize(size);
break;
}
default:
diff --git a/WebKit2/UIProcess/LayerBackedDrawingAreaProxy.h b/WebKit2/UIProcess/LayerBackedDrawingAreaProxy.h
index a37b6b3..f7499d6 100644
--- a/WebKit2/UIProcess/LayerBackedDrawingAreaProxy.h
+++ b/WebKit2/UIProcess/LayerBackedDrawingAreaProxy.h
@@ -74,7 +74,7 @@ private:
virtual void attachCompositingContext(uint32_t contextID);
virtual void detachCompositingContext();
- void didSetSize();
+ void didSetSize(const WebCore::IntSize&);
void update();
void platformSetSize();
diff --git a/WebKit2/WebProcess/WebPage/LayerBackedDrawingArea.cpp b/WebKit2/WebProcess/WebPage/LayerBackedDrawingArea.cpp
index 4895ce0..3745ef7 100644
--- a/WebKit2/WebProcess/WebPage/LayerBackedDrawingArea.cpp
+++ b/WebKit2/WebProcess/WebPage/LayerBackedDrawingArea.cpp
@@ -115,7 +115,7 @@ void LayerBackedDrawingArea::setSize(const IntSize& viewSize)
return;
}
- WebProcess::shared().connection()->send(DrawingAreaProxyMessage::DidSetSize, m_webPage->pageID(), CoreIPC::In());
+ WebProcess::shared().connection()->send(DrawingAreaProxyMessage::DidSetSize, m_webPage->pageID(), CoreIPC::In(viewSize));
}
void LayerBackedDrawingArea::suspendPainting()
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list