Changeset 98771 in webkit
- Timestamp:
- Oct 28, 2011, 3:34:42 PM (15 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 4 edited
-
ChangeLog (modified) (1 diff)
-
platform/graphics/chromium/LayerRendererChromium.cpp (modified) (1 diff)
-
platform/graphics/chromium/cc/CCLayerTreeHost.cpp (modified) (2 diffs)
-
platform/graphics/chromium/cc/CCLayerTreeHostCommon.cpp (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r98770 r98771 1 2011-10-28 Sheriff Bot <webkit.review.bot@gmail.com> 2 3 Unreviewed, rolling out r98757. 4 http://trac.webkit.org/changeset/98757 5 https://bugs.webkit.org/show_bug.cgi?id=71150 6 7 crashes webkit_unit_tests on chromium windows (Requested by 8 johnny_g on #webkit). 9 10 * platform/graphics/chromium/LayerRendererChromium.cpp: 11 (WebCore::LayerRendererChromium::drawLayersOntoRenderSurfaces): 12 * platform/graphics/chromium/cc/CCLayerTreeHost.cpp: 13 (WebCore::CCLayerTreeHost::paintLayerContents): 14 (WebCore::CCLayerTreeHost::updateCompositorResources): 15 * platform/graphics/chromium/cc/CCLayerTreeHostCommon.cpp: 16 (WebCore::calculateDrawTransformsAndVisibilityInternal): 17 1 18 2011-10-28 Adam Barth <abarth@webkit.org> 2 19 -
trunk/Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp
r98757 r98771 313 313 CCRenderSurface* renderSurface = renderSurfaceLayer->renderSurface(); 314 314 ASSERT(renderSurface); 315 ASSERT(renderSurface->layerList().size()); 316 ASSERT(renderSurface->drawOpacity()); 315 316 renderSurface->setSkipsDraw(true); 317 318 if (!renderSurface->layerList().size()) 319 continue; 320 321 // Skip completely transparent render surfaces. 322 if (!renderSurface->drawOpacity()) 323 continue; 317 324 318 325 if (useRenderSurface(renderSurface)) { 326 renderSurface->setSkipsDraw(false); 327 319 328 if (renderSurfaceLayer != rootDrawLayer) { 320 329 GLC(m_context.get(), m_context->disable(GraphicsContext3D::SCISSOR_TEST)); -
trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp
r98757 r98771 331 331 RenderSurfaceChromium* renderSurface = renderSurfaceLayer->renderSurface(); 332 332 ASSERT(renderSurface); 333 ASSERT(renderSurface->layerList().size()); 334 ASSERT(renderSurface->drawOpacity()); 333 334 // Render surfaces whose drawable area has zero width or height 335 // will have no layers associated with them and should be skipped. 336 if (!renderSurface->layerList().size()) 337 continue; 338 339 if (!renderSurface->drawOpacity()) 340 continue; 335 341 336 342 renderSurfaceLayer->setLayerTreeHost(this); … … 365 371 RenderSurfaceChromium* renderSurface = renderSurfaceLayer->renderSurface(); 366 372 ASSERT(renderSurface); 367 ASSERT(renderSurface->layerList().size()); 368 ASSERT(renderSurface->drawOpacity()); 373 374 if (!renderSurface->layerList().size() || !renderSurface->drawOpacity()) 375 continue; 369 376 370 377 if (renderSurfaceLayer->maskLayer()) -
trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostCommon.cpp
r98757 r98771 233 233 bool useSurfaceForFlatDescendants = layer->parent() && layer->parent()->preserves3D() && !layer->preserves3D() && layer->descendantDrawsContent(); 234 234 if (useSurfaceForMasking || useSurfaceForReflection || useSurfaceForFlatDescendants || ((useSurfaceForClipping || useSurfaceForOpacity) && layer->descendantDrawsContent())) { 235 if (!layer->renderSurface()) 236 layer->createRenderSurface(); 237 RenderSurfaceType* renderSurface = layer->renderSurface(); 238 239 // The origin of the new surface is the upper left corner of the layer. 240 TransformationMatrix drawTransform; 241 drawTransform.translate3d(0.5 * bounds.width(), 0.5 * bounds.height(), 0); 242 layer->setDrawTransform(drawTransform); 243 244 transformedLayerRect = IntRect(0, 0, bounds.width(), bounds.height()); 245 235 246 // Layer's opacity will be applied when drawing the render surface. 236 247 float drawOpacity = layer->opacity(); 237 248 if (layer->parent() && layer->parent()->preserves3D()) 238 249 drawOpacity *= layer->parent()->drawOpacity(); 239 240 // If this render surface isn't drawn, we can also skip its children.241 if (!drawOpacity)242 return;243 244 if (!layer->renderSurface())245 layer->createRenderSurface();246 247 RenderSurfaceType* renderSurface = layer->renderSurface();248 renderSurface->clearLayerList();249 250 // The origin of the new surface is the upper left corner of the layer.251 TransformationMatrix drawTransform;252 drawTransform.translate3d(0.5 * bounds.width(), 0.5 * bounds.height(), 0);253 layer->setDrawTransform(drawTransform);254 255 transformedLayerRect = IntRect(0, 0, bounds.width(), bounds.height());256 257 250 renderSurface->setDrawOpacity(drawOpacity); 258 251 layer->setDrawOpacity(1); … … 269 262 // surface and is therefore expressed in the parent's coordinate system. 270 263 renderSurface->setScissorRect(layer->parent() ? layer->parent()->scissorRect() : layer->scissorRect()); 264 265 renderSurface->clearLayerList(); 271 266 272 267 if (layer->maskLayer()) { … … 377 372 } 378 373 379 if (layer->renderSurface() && !layer->renderSurface()->layerList().size()) {380 // If a render surface has no layer list, then it and none of its381 // children needed to get drawn. Therefore, it should be the last layer382 // in the render surface list and we can trivially remove it.383 ASSERT(renderSurfaceLayerList.last() == layer);384 renderSurfaceLayerList.removeLast();385 layer->clearRenderSurface();386 return;387 }388 389 // If neither this layer nor any of its children were added, early out.390 if (sortingStartIndex == descendants.size())391 return;392 393 374 if (layer->masksToBounds() || useSurfaceForMasking) { 394 375 IntRect drawableContentRect = layer->drawableContentRect();
Note:
See TracChangeset
for help on using the changeset viewer.