Title: [149004] trunk/Source/WebKit2
- Revision
- 149004
- Author
- [email protected]
- Date
- 2013-04-23 16:02:08 -0700 (Tue, 23 Apr 2013)
Log Message
When the web page transparency changes, DrawingAreaImpl needs to know about it
https://bugs.webkit.org/show_bug.cgi?id=115062
Reviewed by Tim Horton.
The non-composited contents layer owned by LayerTreeHostMac needs to
be marked as opaque or not depending on whether the WebPage draws
a background (or transparent background). It computed this at creation,
but did not dynamically update the state. Fix it so it does.
This fixes cases of garbage pixels in the Web Inspector toolbar area
in some configurations.
* WebProcess/WebPage/DrawingAreaImpl.cpp:
(WebKit::DrawingAreaImpl::pageBackgroundTransparencyChanged):
* WebProcess/WebPage/DrawingAreaImpl.h:
(DrawingAreaImpl):
* WebProcess/WebPage/LayerTreeHost.h:
* WebProcess/WebPage/mac/LayerTreeHostMac.h:
* WebProcess/WebPage/mac/LayerTreeHostMac.mm:
(WebKit::LayerTreeHostMac::pageBackgroundTransparencyChanged):
Modified Paths
Diff
Modified: trunk/Source/WebKit2/ChangeLog (149003 => 149004)
--- trunk/Source/WebKit2/ChangeLog 2013-04-23 22:43:19 UTC (rev 149003)
+++ trunk/Source/WebKit2/ChangeLog 2013-04-23 23:02:08 UTC (rev 149004)
@@ -1,3 +1,27 @@
+2013-04-23 Simon Fraser <[email protected]>
+
+ When the web page transparency changes, DrawingAreaImpl needs to know about it
+ https://bugs.webkit.org/show_bug.cgi?id=115062
+
+ Reviewed by Tim Horton.
+
+ The non-composited contents layer owned by LayerTreeHostMac needs to
+ be marked as opaque or not depending on whether the WebPage draws
+ a background (or transparent background). It computed this at creation,
+ but did not dynamically update the state. Fix it so it does.
+
+ This fixes cases of garbage pixels in the Web Inspector toolbar area
+ in some configurations.
+
+ * WebProcess/WebPage/DrawingAreaImpl.cpp:
+ (WebKit::DrawingAreaImpl::pageBackgroundTransparencyChanged):
+ * WebProcess/WebPage/DrawingAreaImpl.h:
+ (DrawingAreaImpl):
+ * WebProcess/WebPage/LayerTreeHost.h:
+ * WebProcess/WebPage/mac/LayerTreeHostMac.h:
+ * WebProcess/WebPage/mac/LayerTreeHostMac.mm:
+ (WebKit::LayerTreeHostMac::pageBackgroundTransparencyChanged):
+
2013-04-23 Anders Carlsson <[email protected]>
REGRESSION(r148922): Crash opening web archives or loading web pages
Modified: trunk/Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.cpp (149003 => 149004)
--- trunk/Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.cpp 2013-04-23 22:43:19 UTC (rev 149003)
+++ trunk/Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.cpp 2013-04-23 23:02:08 UTC (rev 149004)
@@ -178,6 +178,12 @@
m_scrollOffset += scrollDelta;
}
+void DrawingAreaImpl::pageBackgroundTransparencyChanged()
+{
+ if (m_layerTreeHost)
+ m_layerTreeHost->pageBackgroundTransparencyChanged();
+}
+
void DrawingAreaImpl::setLayerTreeStateIsFrozen(bool isFrozen)
{
if (m_layerTreeStateIsFrozen == isFrozen)
Modified: trunk/Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.h (149003 => 149004)
--- trunk/Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.h 2013-04-23 22:43:19 UTC (rev 149003)
+++ trunk/Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.h 2013-04-23 23:02:08 UTC (rev 149004)
@@ -54,6 +54,7 @@
virtual void setNeedsDisplay() OVERRIDE;
virtual void setNeedsDisplayInRect(const WebCore::IntRect&) OVERRIDE;
virtual void scroll(const WebCore::IntRect& scrollRect, const WebCore::IntSize& scrollDelta);
+ virtual void pageBackgroundTransparencyChanged() OVERRIDE;
virtual void setLayerTreeStateIsFrozen(bool);
virtual bool layerTreeStateIsFrozen() const { return m_layerTreeStateIsFrozen; }
virtual LayerTreeHost* layerTreeHost() const { return m_layerTreeHost.get(); }
Modified: trunk/Source/WebKit2/WebProcess/WebPage/LayerTreeHost.h (149003 => 149004)
--- trunk/Source/WebKit2/WebProcess/WebPage/LayerTreeHost.h 2013-04-23 22:43:19 UTC (rev 149003)
+++ trunk/Source/WebKit2/WebProcess/WebPage/LayerTreeHost.h 2013-04-23 23:02:08 UTC (rev 149004)
@@ -72,6 +72,7 @@
virtual bool forceRepaintAsync(uint64_t /*callbackID*/) { return false; }
virtual void sizeDidChange(const WebCore::IntSize& newSize) = 0;
virtual void deviceOrPageScaleFactorChanged() = 0;
+ virtual void pageBackgroundTransparencyChanged() = 0;
virtual void didInstallPageOverlay(PageOverlay*) = 0;
virtual void didUninstallPageOverlay(PageOverlay*) = 0;
Modified: trunk/Source/WebKit2/WebProcess/WebPage/mac/LayerTreeHostMac.h (149003 => 149004)
--- trunk/Source/WebKit2/WebProcess/WebPage/mac/LayerTreeHostMac.h 2013-04-23 22:43:19 UTC (rev 149003)
+++ trunk/Source/WebKit2/WebProcess/WebPage/mac/LayerTreeHostMac.h 2013-04-23 23:02:08 UTC (rev 149004)
@@ -58,6 +58,7 @@
virtual void forceRepaint() OVERRIDE;
virtual void sizeDidChange(const WebCore::IntSize& newSize) OVERRIDE;
virtual void deviceOrPageScaleFactorChanged() OVERRIDE;
+ virtual void pageBackgroundTransparencyChanged() OVERRIDE;
virtual void didInstallPageOverlay(PageOverlay*) OVERRIDE;
virtual void didUninstallPageOverlay(PageOverlay*) OVERRIDE;
Modified: trunk/Source/WebKit2/WebProcess/WebPage/mac/LayerTreeHostMac.mm (149003 => 149004)
--- trunk/Source/WebKit2/WebProcess/WebPage/mac/LayerTreeHostMac.mm 2013-04-23 22:43:19 UTC (rev 149003)
+++ trunk/Source/WebKit2/WebProcess/WebPage/mac/LayerTreeHostMac.mm 2013-04-23 23:02:08 UTC (rev 149004)
@@ -182,6 +182,11 @@
m_nonCompositedContentLayer->deviceOrPageScaleFactorChanged();
}
+void LayerTreeHostMac::pageBackgroundTransparencyChanged()
+{
+ m_nonCompositedContentLayer->setContentsOpaque(m_webPage->drawsBackground() && !m_webPage->drawsTransparentBackground());
+}
+
void LayerTreeHostMac::didInstallPageOverlay(PageOverlay* pageOverlay)
{
createPageOverlayLayer(pageOverlay);
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes