Changeset 153112 in webkit
- Timestamp:
- Jul 24, 2013 8:16:00 PM (11 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r153105 r153112 1 2013-07-24 Simon Fraser <simon.fraser@apple.com> 2 3 [iOS] Captions are clipped in documents using pagination 4 https://bugs.webkit.org/show_bug.cgi?id=119072 5 6 Reviewed by Beth Dakin. 7 8 MediaControlTextTrackContainerElement::createTextTrackRepresentationImage() is called 9 to paint captions into a layer used for fullscreen video. It did the painting using 10 a subtree paint, but starting at the root RenderView's layer. This is problematic, 11 because the caption painting is subject to clipping for columns, and any enclosing 12 overflow:hidden container. 13 14 Fix this by starting the paint at the MediaControlTextTrackContainerElement's 15 renderer's layer. By doing this we don't have to worry about an offset, so no 16 translation is required. 17 18 Also make sure we update layer before grabbing the renderer (in case layout 19 destroys it). 20 21 * html/shadow/MediaControlElements.cpp: 22 (WebCore::MediaControlTextTrackContainerElement::createTextTrackRepresentationImage): 23 1 24 2013-07-24 Simon Fraser <simon.fraser@apple.com> 2 25 -
trunk/Source/WebCore/html/shadow/MediaControlElements.cpp
r152975 r153112 1398 1398 return 0; 1399 1399 1400 Frame* frame = document()->frame(); 1401 if (!frame) 1402 return 0; 1403 1404 document()->updateLayout(); 1405 1400 1406 RenderObject* renderer = this->renderer(); 1401 1407 if (!renderer) 1402 1408 return 0; 1403 1409 1404 Frame* frame = document()->frame(); 1405 if (!frame) 1410 if (!renderer->hasLayer()) 1406 1411 return 0; 1407 1412 1408 document()->updateLayout(); 1409 1410 LayoutRect topLevelRect; 1411 IntRect paintingRect = pixelSnappedIntRect(renderer->paintingRootRect(topLevelRect)); 1413 RenderLayer* layer = toRenderLayerModelObject(renderer)->layer(); 1412 1414 1413 1415 float deviceScaleFactor = 1; … … 1415 1417 deviceScaleFactor = page->deviceScaleFactor(); 1416 1418 1419 IntRect paintingRect = IntRect(IntPoint(), layer->size()); 1417 1420 OwnPtr<ImageBuffer> buffer(ImageBuffer::create(paintingRect.size(), deviceScaleFactor, ColorSpaceDeviceRGB)); 1418 1421 if (!buffer) 1419 1422 return 0; 1420 1423 1421 // Translate the renderer painting rect into graphics context coordinates. 1422 FloatSize translation(-paintingRect.x(), -paintingRect.y()); 1423 1424 buffer->context()->translate(translation); 1425 1426 RenderLayer* layer = frame->contentRenderer()->layer(); 1427 layer->paint(buffer->context(), paintingRect, PaintBehaviorFlattenCompositingLayers, renderer, 0, RenderLayer::PaintLayerPaintingCompositingAllPhases); 1424 layer->paint(buffer->context(), paintingRect, PaintBehaviorFlattenCompositingLayers, 0, 0, RenderLayer::PaintLayerPaintingCompositingAllPhases); 1428 1425 1429 1426 return buffer->copyImage();
Note: See TracChangeset
for help on using the changeset viewer.