OLD | NEW |
---|---|
1 /* | 1 /* |
2 * Copyright (C) 2009, 2010 Apple Inc. All rights reserved. | 2 * Copyright (C) 2009, 2010 Apple Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
(...skipping 1216 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1227 | 1227 |
1228 void RenderLayerCompositor::frameViewDidLayout() | 1228 void RenderLayerCompositor::frameViewDidLayout() |
1229 { | 1229 { |
1230 RenderLayerBacking* renderViewBacking = m_renderView->layer()->backing(); | 1230 RenderLayerBacking* renderViewBacking = m_renderView->layer()->backing(); |
1231 if (renderViewBacking) | 1231 if (renderViewBacking) |
1232 renderViewBacking->adjustTiledBackingCoverage(); | 1232 renderViewBacking->adjustTiledBackingCoverage(); |
1233 } | 1233 } |
1234 | 1234 |
1235 void RenderLayerCompositor::rootFixedBackgroundsChanged() | 1235 void RenderLayerCompositor::rootFixedBackgroundsChanged() |
1236 { | 1236 { |
1237 RenderLayerBacking* renderViewBacking = m_renderView->layer()->backing(); | 1237 if (supportsFixedRootBackgroundCompositing()) |
1238 if (renderViewBacking && renderViewBacking->usingTiledBacking()) | |
1239 setCompositingLayersNeedRebuild(); | 1238 setCompositingLayersNeedRebuild(); |
1240 } | 1239 } |
1241 | 1240 |
1242 void RenderLayerCompositor::scrollingLayerDidChange(RenderLayer* layer) | 1241 void RenderLayerCompositor::scrollingLayerDidChange(RenderLayer* layer) |
1243 { | 1242 { |
1244 if (ScrollingCoordinator* scrollingCoordinator = this->scrollingCoordinator( )) | 1243 if (ScrollingCoordinator* scrollingCoordinator = this->scrollingCoordinator( )) |
1245 scrollingCoordinator->scrollableAreaScrollLayerDidChange(layer); | 1244 scrollingCoordinator->scrollableAreaScrollLayerDidChange(layer); |
1246 } | 1245 } |
1247 | 1246 |
1247 void RenderLayerCompositor::fixedRootBackgroundLayerChanged() | |
1248 { | |
1249 GraphicsLayer* backgroundLayer = fixedRootBackgroundLayer(); | |
1250 if (!backgroundLayer) | |
1251 return; | |
1252 | |
1253 // FIXME: there must be a better way to insert this layer into the tree. | |
jamesr
2013/04/09 19:45:48
yes, please figure out a better way. are the layer
| |
1254 // We'll also have to unhook it at some point. | |
1255 GraphicsLayer* root = m_rootContentLayer.get(); | |
1256 while (root && root->parent()) | |
1257 root = root->parent(); | |
1258 | |
1259 GraphicsLayer* frameClippingLayer = root->children()[0]; | |
1260 GraphicsLayer* frameScrollingLayer = frameClippingLayer->children()[0]; | |
1261 GraphicsLayer* nonCompositedContentLayer = frameScrollingLayer->children()[0 ]; | |
1262 | |
1263 // ??? Would we ever want to draw in both the NCCH *and* the fixed root bg? | |
1264 // If so, it seems like we're toast. We have to make this layer invisible | |
1265 // so that the fixed root bg can show through. | |
1266 nonCompositedContentLayer->setDrawsContent(false); | |
1267 | |
1268 frameClippingLayer->addChildAtIndex(backgroundLayer, 0); | |
1269 } | |
1270 | |
1248 String RenderLayerCompositor::layerTreeAsText(LayerTreeFlags flags) | 1271 String RenderLayerCompositor::layerTreeAsText(LayerTreeFlags flags) |
1249 { | 1272 { |
1250 updateCompositingLayers(CompositingUpdateAfterLayout); | 1273 updateCompositingLayers(CompositingUpdateAfterLayout); |
1251 | 1274 |
1252 if (!m_rootContentLayer) | 1275 if (!m_rootContentLayer) |
1253 return String(); | 1276 return String(); |
1254 | 1277 |
1255 flushPendingLayerChanges(true); | 1278 flushPendingLayerChanges(true); |
1256 | 1279 |
1257 LayerTreeAsTextBehavior layerTreeBehavior = LayerTreeAsTextBehaviorNormal; | 1280 LayerTreeAsTextBehavior layerTreeBehavior = LayerTreeAsTextBehaviorNormal; |
1258 if (flags & LayerTreeFlagsIncludeDebugInfo) | 1281 if (flags & LayerTreeFlagsIncludeDebugInfo) |
1259 layerTreeBehavior |= LayerTreeAsTextDebug; | 1282 layerTreeBehavior |= LayerTreeAsTextDebug; |
1260 if (flags & LayerTreeFlagsIncludeVisibleRects) | 1283 if (flags & LayerTreeFlagsIncludeVisibleRects) |
1261 layerTreeBehavior |= LayerTreeAsTextIncludeVisibleRects; | 1284 layerTreeBehavior |= LayerTreeAsTextIncludeVisibleRects; |
1262 if (flags & LayerTreeFlagsIncludeTileCaches) | 1285 if (flags & LayerTreeFlagsIncludeTileCaches) |
1263 layerTreeBehavior |= LayerTreeAsTextIncludeTileCaches; | 1286 layerTreeBehavior |= LayerTreeAsTextIncludeTileCaches; |
1264 if (flags & LayerTreeFlagsIncludeRepaintRects) | 1287 if (flags & LayerTreeFlagsIncludeRepaintRects) |
1265 layerTreeBehavior |= LayerTreeAsTextIncludeRepaintRects; | 1288 layerTreeBehavior |= LayerTreeAsTextIncludeRepaintRects; |
1266 if (flags & LayerTreeFlagsIncludePaintingPhases) | 1289 if (flags & LayerTreeFlagsIncludePaintingPhases) |
1267 layerTreeBehavior |= LayerTreeAsTextIncludePaintingPhases; | 1290 layerTreeBehavior |= LayerTreeAsTextIncludePaintingPhases; |
1268 | 1291 |
1269 // We skip dumping the scroll and clip layers to keep layerTreeAsText output | 1292 // We skip dumping the scroll and clip layers to keep layerTreeAsText output |
1270 // similar between platforms. | 1293 // similar between platforms. |
1271 String layerTreeText = m_rootContentLayer->layerTreeAsText(layerTreeBehavior ); | 1294 GraphicsLayer* layer = m_rootContentLayer.get(); |
1295 while (layer && layer->parent()) | |
1296 layer = layer->parent(); | |
1297 //String layerTreeText = m_rootContentLayer->layerTreeAsText(layerTreeBehavi or); | |
1298 String layerTreeText = layer->layerTreeAsText(layerTreeBehavior); | |
1272 | 1299 |
1273 // The true root layer is not included in the dump, so if we want to report | 1300 // The true root layer is not included in the dump, so if we want to report |
1274 // its repaint rects, they must be included here. | 1301 // its repaint rects, they must be included here. |
1275 if (flags & LayerTreeFlagsIncludeRepaintRects) { | 1302 if (flags & LayerTreeFlagsIncludeRepaintRects) { |
1276 String layerTreeTextWithRootRepaintRects = m_renderView->frameView()->tr ackedRepaintRectsAsText(); | 1303 String layerTreeTextWithRootRepaintRects = m_renderView->frameView()->tr ackedRepaintRectsAsText(); |
1277 layerTreeTextWithRootRepaintRects.append(layerTreeText); | 1304 layerTreeTextWithRootRepaintRects.append(layerTreeText); |
1278 return layerTreeTextWithRootRepaintRects; | 1305 return layerTreeTextWithRootRepaintRects; |
1279 } | 1306 } |
1280 | 1307 |
1281 return layerTreeText; | 1308 return layerTreeText; |
(...skipping 948 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2230 #if PLATFORM(CHROMIUM) && ENABLE(RUBBER_BANDING) | 2257 #if PLATFORM(CHROMIUM) && ENABLE(RUBBER_BANDING) |
2231 } else if (graphicsLayer == layerForOverhangAreas()) { | 2258 } else if (graphicsLayer == layerForOverhangAreas()) { |
2232 ScrollView* view = m_renderView->frameView(); | 2259 ScrollView* view = m_renderView->frameView(); |
2233 view->calculateAndPaintOverhangAreas(&context, clip); | 2260 view->calculateAndPaintOverhangAreas(&context, clip); |
2234 #endif | 2261 #endif |
2235 } | 2262 } |
2236 } | 2263 } |
2237 | 2264 |
2238 bool RenderLayerCompositor::supportsFixedRootBackgroundCompositing() const | 2265 bool RenderLayerCompositor::supportsFixedRootBackgroundCompositing() const |
2239 { | 2266 { |
2240 RenderLayerBacking* renderViewBacking = m_renderView->layer()->backing(); | 2267 return m_renderView->document()->settings() && |
2241 return renderViewBacking && renderViewBacking->usingTiledBacking(); | 2268 m_renderView->document()->settings()->acceleratedCompositingForFixedR ootBackgroundEnabled(); |
2242 } | 2269 } |
2243 | 2270 |
2244 bool RenderLayerCompositor::needsFixedRootBackgroundLayer(const RenderLayer* lay er) const | 2271 bool RenderLayerCompositor::needsFixedRootBackgroundLayer(const RenderLayer* lay er) const |
2245 { | 2272 { |
2246 if (layer != m_renderView->layer()) | 2273 if (layer != m_renderView->layer()) |
2247 return false; | 2274 return false; |
2248 | 2275 |
2249 return supportsFixedRootBackgroundCompositing() && m_renderView->rootBackgro undIsEntirelyFixed(); | 2276 return supportsFixedRootBackgroundCompositing() && m_renderView->rootBackgro undIsEntirelyFixed(); |
2250 } | 2277 } |
2251 | 2278 |
(...skipping 791 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3043 info.addMember(m_layerForBottomOverhangArea, "layerForBottomOverhangArea"); | 3070 info.addMember(m_layerForBottomOverhangArea, "layerForBottomOverhangArea"); |
3044 info.addMember(m_layerForHeader, "layerForHeader"); | 3071 info.addMember(m_layerForHeader, "layerForHeader"); |
3045 info.addMember(m_layerForFooter, "layerForFooter"); | 3072 info.addMember(m_layerForFooter, "layerForFooter"); |
3046 #endif | 3073 #endif |
3047 info.addMember(m_layerUpdater, "layerUpdater"); | 3074 info.addMember(m_layerUpdater, "layerUpdater"); |
3048 } | 3075 } |
3049 | 3076 |
3050 } // namespace WebCore | 3077 } // namespace WebCore |
3051 | 3078 |
3052 #endif // USE(ACCELERATED_COMPOSITING) | 3079 #endif // USE(ACCELERATED_COMPOSITING) |
OLD | NEW |