Changeset 109118 in webkit
- Timestamp:
- Feb 28, 2012, 10:21:02 AM (13 years ago)
- Location:
- trunk/Source/WebKit2
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit2/ChangeLog
r109117 r109118 1 2012-02-27 Anders Carlsson <andersca@apple.com> 2 3 Add basic page overlay support to TiledCoreAnimationDrawingArea 4 https://bugs.webkit.org/show_bug.cgi?id=79716 5 <rdar://problem/10923079> 6 7 Reviewed by Sam Weinig. 8 9 * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h: 10 Make TiledCoreAnimationDrawingArea a GraphicsLayerClient. 11 12 * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm: 13 (WebKit::TiledCoreAnimationDrawingArea::didInstallPageOverlay): 14 Create the page overlay layer. 15 16 (WebKit::TiledCoreAnimationDrawingArea::didUninstallPageOverlay): 17 Destroy the page overlay layer. 18 19 (WebKit::TiledCoreAnimationDrawingArea::setPageOverlayNeedsDisplay): 20 Mark the page overlay layer as needing display. 21 22 (WebKit::TiledCoreAnimationDrawingArea::notifyAnimationStarted): 23 (WebKit::TiledCoreAnimationDrawingArea::notifySyncRequired): 24 Add empty GraphisLayerClient member function implementations. 25 26 (WebKit::TiledCoreAnimationDrawingArea::paintContents): 27 Ask the page overlay to paint itself. 28 29 (WebKit::TiledCoreAnimationDrawingArea::flushLayers): 30 Flush the page overlay layer. 31 32 (WebKit::TiledCoreAnimationDrawingArea::updateGeometry): 33 Resize the page overlay layer. 34 35 (WebKit::TiledCoreAnimationDrawingArea::setRootCompositingLayer): 36 If we have a page overlay layer, add it as a sublayer of the root layer. 37 38 (WebKit::TiledCoreAnimationDrawingArea::createPageOverlayLayer): 39 Create the page overlay layer and add it as a sublayer of the root layer. 40 41 (WebKit::TiledCoreAnimationDrawingArea::destroyPageOverlayLayer): 42 Remove the page overlay layer and destroy it. 43 1 44 2012-02-28 Carlos Garcia Campos <cgarcia@igalia.com> 2 45 -
trunk/Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h
r108946 r109118 28 28 29 29 #include "DrawingArea.h" 30 #include <WebCore/GraphicsLayerClient.h> 30 31 #include <WebCore/LayerFlushScheduler.h> 31 32 #include <WebCore/LayerFlushSchedulerClient.h> … … 39 40 class RemoteLayerClient; 40 41 41 class TiledCoreAnimationDrawingArea : public DrawingArea, privateWebCore::LayerFlushSchedulerClient {42 class TiledCoreAnimationDrawingArea : public DrawingArea, WebCore::GraphicsLayerClient, WebCore::LayerFlushSchedulerClient { 42 43 public: 43 44 static PassOwnPtr<TiledCoreAnimationDrawingArea> create(WebPage*, const WebPageCreationParameters&); … … 57 58 virtual void scheduleCompositingLayerSync() OVERRIDE; 58 59 60 virtual void didInstallPageOverlay() OVERRIDE; 61 virtual void didUninstallPageOverlay() OVERRIDE; 62 virtual void setPageOverlayNeedsDisplay(const WebCore::IntRect&) OVERRIDE; 63 64 // WebCore::GraphicsLayerClient 65 virtual void notifyAnimationStarted(const WebCore::GraphicsLayer*, double time) OVERRIDE; 66 virtual void notifySyncRequired(const WebCore::GraphicsLayer*) OVERRIDE; 67 virtual void paintContents(const WebCore::GraphicsLayer*, WebCore::GraphicsContext&, WebCore::GraphicsLayerPaintingPhase, const WebCore::IntRect& clipRect) OVERRIDE; 68 virtual bool showDebugBorders(const WebCore::GraphicsLayer*) const OVERRIDE; 69 virtual bool showRepaintCounter(const WebCore::GraphicsLayer*) const OVERRIDE; 70 virtual float deviceScaleFactor() const OVERRIDE; 71 59 72 // WebCore::LayerFlushSchedulerClient 60 73 virtual bool flushLayers() OVERRIDE; … … 66 79 void setRootCompositingLayer(CALayer *); 67 80 81 void createPageOverlayLayer(); 82 void destroyPageOverlayLayer(); 83 68 84 bool m_layerTreeStateIsFrozen; 69 85 WebCore::LayerFlushScheduler m_layerFlushScheduler; … … 72 88 RetainPtr<CALayer> m_rootLayer; 73 89 RetainPtr<CALayer> m_pendingRootCompositingLayer; 90 91 OwnPtr<WebCore::GraphicsLayer> m_pageOverlayLayer; 74 92 }; 75 93 -
trunk/Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm
r108946 r109118 145 145 } 146 146 147 void TiledCoreAnimationDrawingArea::didInstallPageOverlay() 148 { 149 createPageOverlayLayer(); 150 scheduleCompositingLayerSync(); 151 } 152 153 void TiledCoreAnimationDrawingArea::didUninstallPageOverlay() 154 { 155 destroyPageOverlayLayer(); 156 scheduleCompositingLayerSync(); 157 } 158 159 void TiledCoreAnimationDrawingArea::setPageOverlayNeedsDisplay(const IntRect& rect) 160 { 161 ASSERT(m_pageOverlayLayer); 162 m_pageOverlayLayer->setNeedsDisplayInRect(rect); 163 scheduleCompositingLayerSync(); 164 } 165 166 void TiledCoreAnimationDrawingArea::notifyAnimationStarted(const GraphicsLayer*, double) 167 { 168 } 169 170 void TiledCoreAnimationDrawingArea::notifySyncRequired(const GraphicsLayer*) 171 { 172 } 173 174 void TiledCoreAnimationDrawingArea::paintContents(const GraphicsLayer* graphicsLayer, GraphicsContext& graphicsContext, GraphicsLayerPaintingPhase, const IntRect& clipRect) 175 { 176 ASSERT_UNUSED(graphicsLayer, graphicsLayer == m_pageOverlayLayer); 177 178 m_webPage->drawPageOverlay(graphicsContext, clipRect); 179 } 180 181 bool TiledCoreAnimationDrawingArea::showDebugBorders(const GraphicsLayer*) const 182 { 183 return m_webPage->corePage()->settings()->showDebugBorders(); 184 } 185 186 bool TiledCoreAnimationDrawingArea::showRepaintCounter(const GraphicsLayer*) const 187 { 188 return m_webPage->corePage()->settings()->showRepaintCounter(); 189 } 190 191 float TiledCoreAnimationDrawingArea::deviceScaleFactor() const 192 { 193 return m_webPage->corePage()->deviceScaleFactor(); 194 } 195 147 196 bool TiledCoreAnimationDrawingArea::flushLayers() 148 197 { … … 159 208 } 160 209 210 if (m_pageOverlayLayer) 211 m_pageOverlayLayer->syncCompositingStateForThisLayerOnly(); 212 161 213 bool returnValue = m_webPage->corePage()->mainFrame()->view()->syncCompositingStateIncludingSubframes(); 162 214 … … 169 221 m_webPage->setSize(viewSize); 170 222 m_webPage->layoutIfNeeded(); 223 224 if (m_pageOverlayLayer) 225 m_pageOverlayLayer->setSize(viewSize); 171 226 172 227 if (!m_layerTreeStateIsFrozen) … … 200 255 if (!layer) 201 256 m_rootLayer.get().sublayers = nil; 202 else 257 else { 203 258 m_rootLayer.get().sublayers = [NSArray arrayWithObject:layer]; 204 259 260 if (m_pageOverlayLayer) 261 [m_rootLayer.get() addSublayer:m_pageOverlayLayer->platformLayer()]; 262 } 263 205 264 [CATransaction commit]; 206 265 } 207 266 267 void TiledCoreAnimationDrawingArea::createPageOverlayLayer() 268 { 269 ASSERT(!m_pageOverlayLayer); 270 271 m_pageOverlayLayer = GraphicsLayer::create(this); 272 #ifndef NDEBUG 273 m_pageOverlayLayer->setName("page overlay content"); 274 #endif 275 276 m_pageOverlayLayer->setDrawsContent(true); 277 m_pageOverlayLayer->setSize(m_webPage->size()); 278 279 [m_rootLayer.get() addSublayer:m_pageOverlayLayer->platformLayer()]; 280 } 281 282 void TiledCoreAnimationDrawingArea::destroyPageOverlayLayer() 283 { 284 ASSERT(m_pageOverlayLayer); 285 286 [m_pageOverlayLayer->platformLayer() removeFromSuperlayer]; 287 m_pageOverlayLayer = nullptr; 288 } 289 208 290 } // namespace WebKit
Note:
See TracChangeset
for help on using the changeset viewer.