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

Reply via email to