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 1244 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1255 return view->platformWidget(); | 1255 return view->platformWidget(); |
1256 #endif | 1256 #endif |
1257 return false; | 1257 return false; |
1258 } | 1258 } |
1259 | 1259 |
1260 bool RenderLayerCompositor::shouldPropagateCompositingToEnclosingFrame() const | 1260 bool RenderLayerCompositor::shouldPropagateCompositingToEnclosingFrame() const |
1261 { | 1261 { |
1262 // Parent document content needs to be able to render on top of a composited
frame, so correct behavior | 1262 // Parent document content needs to be able to render on top of a composited
frame, so correct behavior |
1263 // is to have the parent document become composited too. However, this can c
ause problems on platforms that | 1263 // is to have the parent document become composited too. However, this can c
ause problems on platforms that |
1264 // use native views for frames (like Mac), so disable that behavior on those
platforms for now. | 1264 // use native views for frames (like Mac), so disable that behavior on those
platforms for now. |
1265 HTMLFrameOwnerElement* ownerElement = enclosingFrameElement(); | 1265 HTMLFrameOwnerElement* ownerElement = m_renderView->document()->ownerElement
(); |
1266 RenderObject* renderer = ownerElement ? ownerElement->renderer() : 0; | 1266 RenderObject* renderer = ownerElement ? ownerElement->renderer() : 0; |
1267 | 1267 |
1268 // If we are the top-level frame, don't propagate. | 1268 // If we are the top-level frame, don't propagate. |
1269 if (!ownerElement) | 1269 if (!ownerElement) |
1270 return false; | 1270 return false; |
1271 | 1271 |
1272 if (!allowsIndependentlyCompositedFrames(m_renderView->frameView())) | 1272 if (!allowsIndependentlyCompositedFrames(m_renderView->frameView())) |
1273 return true; | 1273 return true; |
1274 | 1274 |
1275 if (!renderer || !renderer->isRenderPart()) | 1275 if (!renderer || !renderer->isRenderPart()) |
(...skipping 10 matching lines...) Expand all Loading... |
1286 if (frameRenderer->widget()) { | 1286 if (frameRenderer->widget()) { |
1287 ASSERT(frameRenderer->widget()->isFrameView()); | 1287 ASSERT(frameRenderer->widget()->isFrameView()); |
1288 FrameView* view = static_cast<FrameView*>(frameRenderer->widget()); | 1288 FrameView* view = static_cast<FrameView*>(frameRenderer->widget()); |
1289 if (view->isOverlappedIncludingAncestors() || view->hasCompositingAncest
or()) | 1289 if (view->isOverlappedIncludingAncestors() || view->hasCompositingAncest
or()) |
1290 return true; | 1290 return true; |
1291 } | 1291 } |
1292 | 1292 |
1293 return false; | 1293 return false; |
1294 } | 1294 } |
1295 | 1295 |
1296 HTMLFrameOwnerElement* RenderLayerCompositor::enclosingFrameElement() const | |
1297 { | |
1298 if (HTMLFrameOwnerElement* ownerElement = m_renderView->document()->ownerEle
ment()) | |
1299 return (ownerElement->hasTagName(iframeTag) || ownerElement->hasTagName(
frameTag) || ownerElement->hasTagName(objectTag)) ? ownerElement : 0; | |
1300 | |
1301 return 0; | |
1302 } | |
1303 | |
1304 bool RenderLayerCompositor::needsToBeComposited(const RenderLayer* layer) const | 1296 bool RenderLayerCompositor::needsToBeComposited(const RenderLayer* layer) const |
1305 { | 1297 { |
1306 if (!canBeComposited(layer)) | 1298 if (!canBeComposited(layer)) |
1307 return false; | 1299 return false; |
1308 | 1300 |
1309 return requiresCompositingLayer(layer) || layer->mustOverlapCompositedLayers
() || (inCompositingMode() && layer->isRootLayer()); | 1301 return requiresCompositingLayer(layer) || layer->mustOverlapCompositedLayers
() || (inCompositingMode() && layer->isRootLayer()); |
1310 } | 1302 } |
1311 | 1303 |
1312 // Note: this specifies whether the RL needs a compositing layer for intrinsic r
easons. | 1304 // Note: this specifies whether the RL needs a compositing layer for intrinsic r
easons. |
1313 // Use needsToBeComposited() to determine if a RL actually needs a compositing l
ayer. | 1305 // Use needsToBeComposited() to determine if a RL actually needs a compositing l
ayer. |
(...skipping 682 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1996 if (!viewLayer->isComposited()) | 1988 if (!viewLayer->isComposited()) |
1997 return; | 1989 return; |
1998 | 1990 |
1999 if (GraphicsLayer* rootLayer = viewLayer->backing()->graphicsLayer()) | 1991 if (GraphicsLayer* rootLayer = viewLayer->backing()->graphicsLayer()) |
2000 rootLayer->noteDeviceOrPageScaleFactorChangedIncludingDescendants(); | 1992 rootLayer->noteDeviceOrPageScaleFactorChangedIncludingDescendants(); |
2001 } | 1993 } |
2002 | 1994 |
2003 } // namespace WebCore | 1995 } // namespace WebCore |
2004 | 1996 |
2005 #endif // USE(ACCELERATED_COMPOSITING) | 1997 #endif // USE(ACCELERATED_COMPOSITING) |
OLD | NEW |