<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[191049] trunk/Source</title>
</head>
<body>
<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; }
#msg dl a { font-weight: bold}
#msg dl a:link { color:#fc3; }
#msg dl a:active { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/191049">191049</a></dd>
<dt>Author</dt> <dd>simon.fraser@apple.com</dd>
<dt>Date</dt> <dd>2015-10-14 11:10:32 -0700 (Wed, 14 Oct 2015)</dd>
</dl>
<h3>Log Message</h3>
<pre>Change GraphicsContext image-drawing functions to take references
https://bugs.webkit.org/show_bug.cgi?id=150108
Reviewed by Tim Horton and Sam Weinig.
Change GraphicsContext::drawImage(), drawTiledImage(), drawImageBuffer(), clipToImageBuffer()
and isCompatibleWithBuffer() to take references, and adjust calling code, adding
null-checks where necessary.
Source/WebCore:
* css/CSSCrossfadeValue.cpp:
(WebCore::CSSCrossfadeValue::image):
* css/CSSFilterImageValue.cpp:
(WebCore::CSSFilterImageValue::image):
* html/HTMLCanvasElement.cpp:
(WebCore::HTMLCanvasElement::paint):
* html/canvas/CanvasRenderingContext2D.cpp:
(WebCore::CanvasRenderingContext2D::drawImage):
(WebCore::CanvasRenderingContext2D::compositeBuffer):
(WebCore::drawImageToContext):
(WebCore::CanvasRenderingContext2D::fullCanvasCompositedDrawImage):
(WebCore::CanvasRenderingContext2D::drawTextInternal):
* html/canvas/CanvasRenderingContext2D.h:
* html/canvas/WebGL2RenderingContext.cpp:
(WebCore::WebGL2RenderingContext::texSubImage2D):
* html/canvas/WebGLRenderingContext.cpp:
(WebCore::WebGLRenderingContext::texSubImage2D):
* html/canvas/WebGLRenderingContextBase.cpp:
(WebCore::WebGLRenderingContextBase::drawImageIntoBuffer):
(WebCore::WebGLRenderingContextBase::texImage2D):
* html/canvas/WebGLRenderingContextBase.h:
* platform/ScrollView.cpp:
(WebCore::ScrollView::paintPanScrollIcon):
* platform/graphics/CrossfadeGeneratedImage.cpp:
(WebCore::CrossfadeGeneratedImage::CrossfadeGeneratedImage):
(WebCore::drawCrossfadeSubimage):
(WebCore::CrossfadeGeneratedImage::drawCrossfade):
* platform/graphics/CrossfadeGeneratedImage.h:
* platform/graphics/GradientImage.cpp:
(WebCore::GradientImage::drawPattern):
* platform/graphics/GraphicsContext.cpp:
(WebCore::GraphicsContext::drawImage):
(WebCore::GraphicsContext::drawTiledImage):
(WebCore::GraphicsContext::drawImageBuffer):
(WebCore::GraphicsContext::clipToImageBuffer):
(WebCore::GraphicsContext::isCompatibleWithBuffer):
* platform/graphics/GraphicsContext.h:
* platform/graphics/ShadowBlur.cpp:
(WebCore::ShadowBlur::drawShadowBuffer):
(WebCore::ShadowBlur::drawRectShadowWithoutTiling):
(WebCore::ShadowBlur::drawInsetShadowWithoutTiling):
(WebCore::ShadowBlur::drawInsetShadowWithTiling):
(WebCore::ShadowBlur::drawRectShadowWithTiling):
(WebCore::ShadowBlur::drawLayerPieces):
(WebCore::ShadowBlur::endShadowLayer):
* platform/graphics/cairo/ImageBufferCairo.cpp:
(WebCore::ImageBuffer::draw):
* platform/graphics/cg/PDFDocumentImage.cpp:
(WebCore::PDFDocumentImage::draw):
* platform/graphics/filters/FEBlend.cpp:
(WebCore::FEBlend::platformApplySoftware):
* platform/graphics/filters/FEColorMatrix.cpp:
(WebCore::FEColorMatrix::platformApplySoftware):
* platform/graphics/filters/FEComposite.cpp:
(WebCore::FEComposite::platformApplySoftware):
* platform/graphics/filters/FEDropShadow.cpp:
(WebCore::FEDropShadow::platformApplySoftware):
* platform/graphics/filters/FEMerge.cpp:
(WebCore::FEMerge::platformApplySoftware):
* platform/graphics/filters/FEOffset.cpp:
(WebCore::FEOffset::platformApplySoftware):
* platform/graphics/filters/FETile.cpp:
(WebCore::FETile::platformApplySoftware):
* platform/graphics/filters/SourceAlpha.cpp:
(WebCore::SourceAlpha::platformApplySoftware):
* platform/graphics/filters/SourceGraphic.cpp:
(WebCore::SourceGraphic::platformApplySoftware):
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
(WebCore::MediaPlayerPrivateGStreamerBase::paint):
* platform/graphics/texmap/coordinated/CoordinatedImageBacking.cpp:
(WebCore::ImageBackingSurfaceClient::ImageBackingSurfaceClient):
(WebCore::CoordinatedImageBacking::update):
* platform/mac/ThemeMac.mm:
(WebCore::ThemeMac::drawCellOrFocusRingWithViewIntoContext):
* rendering/FilterEffectRenderer.cpp:
(WebCore::FilterEffectRendererHelper::applyFilterEffect):
* rendering/ImageQualityController.cpp:
(WebCore::ImageQualityController::shouldPaintAtLowQuality):
* rendering/ImageQualityController.h:
* rendering/RenderBoxModelObject.cpp:
(WebCore::RenderBoxModelObject::shouldPaintAtLowQuality):
(WebCore::RenderBoxModelObject::paintFillLayerExtended):
* rendering/RenderBoxModelObject.h:
* rendering/RenderEmbeddedObject.cpp:
(WebCore::RenderEmbeddedObject::paintSnapshotImage):
(WebCore::RenderEmbeddedObject::paintContents):
* rendering/RenderEmbeddedObject.h:
* rendering/RenderImage.cpp:
(WebCore::RenderImage::paintReplaced):
(WebCore::RenderImage::paintIntoRect):
* rendering/RenderImageResourceStyleImage.cpp:
(WebCore::RenderImageResourceStyleImage::shutdown):
(WebCore::RenderImageResourceStyleImage::image):
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::drawPlatformResizerImage):
* rendering/RenderListMarker.cpp:
(WebCore::RenderListMarker::paint):
* rendering/RenderSnapshottedPlugIn.cpp:
(WebCore::RenderSnapshottedPlugIn::paintSnapshot):
* rendering/RenderThemeMac.mm:
(WebCore::RenderThemeMac::paintProgressBar):
(WebCore::RenderThemeMac::paintSnapshottedPluginOverlay):
* rendering/RenderThemeWin.cpp:
(WebCore::RenderThemeWin::paintSearchFieldCancelButton):
(WebCore::RenderThemeWin::paintSearchFieldResultsDecorationPart):
(WebCore::RenderThemeWin::paintSearchFieldResultsButton):
* rendering/shapes/Shape.cpp:
(WebCore::Shape::createRasterShape):
* rendering/shapes/ShapeOutsideInfo.cpp:
(WebCore::ShapeOutsideInfo::createShapeForImage): Deleted.
* rendering/style/NinePieceImage.cpp:
(WebCore::NinePieceImage::paint):
* rendering/svg/RenderSVGImage.cpp:
(WebCore::RenderSVGImage::paintForeground):
* rendering/svg/RenderSVGResourceFilter.cpp:
(WebCore::RenderSVGResourceFilter::postApplyResource):
* rendering/svg/SVGRenderingContext.cpp:
(WebCore::SVGRenderingContext::clipToImageBuffer):
(WebCore::SVGRenderingContext::bufferForeground):
* svg/graphics/filters/SVGFEImage.cpp:
(WebCore::FEImage::platformApplySoftware):
Source/WebKit/win:
* FullscreenVideoController.cpp:
(HUDButton::draw):
* Plugins/PluginView.cpp:
(WebCore::PluginView::paintMissingPluginIcon):
Source/WebKit2:
* Shared/ContextMenuContextData.cpp:
(WebKit::ContextMenuContextData::ContextMenuContextData):
* Shared/WebCoreArgumentCoders.cpp:
(IPC::encodeImage):
(IPC::encodeOptionalImage):
(IPC::ArgumentCoder<Cursor>::encode):
* WebProcess/WebPage/WebFrame.cpp:
(WebKit::WebFrame::createSelectionSnapshot):</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorecssCSSCrossfadeValuecpp">trunk/Source/WebCore/css/CSSCrossfadeValue.cpp</a></li>
<li><a href="#trunkSourceWebCorecssCSSFilterImageValuecpp">trunk/Source/WebCore/css/CSSFilterImageValue.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLCanvasElementcpp">trunk/Source/WebCore/html/HTMLCanvasElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlcanvasCanvasRenderingContext2Dcpp">trunk/Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlcanvasCanvasRenderingContext2Dh">trunk/Source/WebCore/html/canvas/CanvasRenderingContext2D.h</a></li>
<li><a href="#trunkSourceWebCorehtmlcanvasWebGL2RenderingContextcpp">trunk/Source/WebCore/html/canvas/WebGL2RenderingContext.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlcanvasWebGLRenderingContextcpp">trunk/Source/WebCore/html/canvas/WebGLRenderingContext.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlcanvasWebGLRenderingContextBasecpp">trunk/Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlcanvasWebGLRenderingContextBaseh">trunk/Source/WebCore/html/canvas/WebGLRenderingContextBase.h</a></li>
<li><a href="#trunkSourceWebCoreplatformScrollViewcpp">trunk/Source/WebCore/platform/ScrollView.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsCrossfadeGeneratedImagecpp">trunk/Source/WebCore/platform/graphics/CrossfadeGeneratedImage.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsCrossfadeGeneratedImageh">trunk/Source/WebCore/platform/graphics/CrossfadeGeneratedImage.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsGradientImagecpp">trunk/Source/WebCore/platform/graphics/GradientImage.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsGraphicsContextcpp">trunk/Source/WebCore/platform/graphics/GraphicsContext.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsGraphicsContexth">trunk/Source/WebCore/platform/graphics/GraphicsContext.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsShadowBlurcpp">trunk/Source/WebCore/platform/graphics/ShadowBlur.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicscairoImageBufferCairocpp">trunk/Source/WebCore/platform/graphics/cairo/ImageBufferCairo.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicscgPDFDocumentImagecpp">trunk/Source/WebCore/platform/graphics/cg/PDFDocumentImage.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsfiltersFEBlendcpp">trunk/Source/WebCore/platform/graphics/filters/FEBlend.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsfiltersFEColorMatrixcpp">trunk/Source/WebCore/platform/graphics/filters/FEColorMatrix.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsfiltersFECompositecpp">trunk/Source/WebCore/platform/graphics/filters/FEComposite.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsfiltersFEDropShadowcpp">trunk/Source/WebCore/platform/graphics/filters/FEDropShadow.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsfiltersFEMergecpp">trunk/Source/WebCore/platform/graphics/filters/FEMerge.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsfiltersFEOffsetcpp">trunk/Source/WebCore/platform/graphics/filters/FEOffset.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsfiltersFETilecpp">trunk/Source/WebCore/platform/graphics/filters/FETile.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsfiltersSourceAlphacpp">trunk/Source/WebCore/platform/graphics/filters/SourceAlpha.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsfiltersSourceGraphiccpp">trunk/Source/WebCore/platform/graphics/filters/SourceGraphic.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsgstreamerMediaPlayerPrivateGStreamerBasecpp">trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicstexmapcoordinatedCoordinatedImageBackingcpp">trunk/Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedImageBacking.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformmacThemeMacmm">trunk/Source/WebCore/platform/mac/ThemeMac.mm</a></li>
<li><a href="#trunkSourceWebCorerenderingFilterEffectRenderercpp">trunk/Source/WebCore/rendering/FilterEffectRenderer.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingImageQualityControllercpp">trunk/Source/WebCore/rendering/ImageQualityController.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingImageQualityControllerh">trunk/Source/WebCore/rendering/ImageQualityController.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderBoxModelObjectcpp">trunk/Source/WebCore/rendering/RenderBoxModelObject.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderBoxModelObjecth">trunk/Source/WebCore/rendering/RenderBoxModelObject.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderEmbeddedObjectcpp">trunk/Source/WebCore/rendering/RenderEmbeddedObject.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderEmbeddedObjecth">trunk/Source/WebCore/rendering/RenderEmbeddedObject.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderImagecpp">trunk/Source/WebCore/rendering/RenderImage.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderImageResourceStyleImagecpp">trunk/Source/WebCore/rendering/RenderImageResourceStyleImage.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderLayercpp">trunk/Source/WebCore/rendering/RenderLayer.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderListMarkercpp">trunk/Source/WebCore/rendering/RenderListMarker.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderSnapshottedPlugIncpp">trunk/Source/WebCore/rendering/RenderSnapshottedPlugIn.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderThemeMacmm">trunk/Source/WebCore/rendering/RenderThemeMac.mm</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderThemeWincpp">trunk/Source/WebCore/rendering/RenderThemeWin.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingshapesShapecpp">trunk/Source/WebCore/rendering/shapes/Shape.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingshapesShapeOutsideInfocpp">trunk/Source/WebCore/rendering/shapes/ShapeOutsideInfo.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingstyleNinePieceImagecpp">trunk/Source/WebCore/rendering/style/NinePieceImage.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingsvgRenderSVGImagecpp">trunk/Source/WebCore/rendering/svg/RenderSVGImage.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingsvgRenderSVGResourceFiltercpp">trunk/Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingsvgSVGRenderingContextcpp">trunk/Source/WebCore/rendering/svg/SVGRenderingContext.cpp</a></li>
<li><a href="#trunkSourceWebCoresvggraphicsfiltersSVGFEImagecpp">trunk/Source/WebCore/svg/graphics/filters/SVGFEImage.cpp</a></li>
<li><a href="#trunkSourceWebKitwinChangeLog">trunk/Source/WebKit/win/ChangeLog</a></li>
<li><a href="#trunkSourceWebKitwinFullscreenVideoControllercpp">trunk/Source/WebKit/win/FullscreenVideoController.cpp</a></li>
<li><a href="#trunkSourceWebKitwinPluginsPluginViewcpp">trunk/Source/WebKit/win/Plugins/PluginView.cpp</a></li>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2SharedContextMenuContextDatacpp">trunk/Source/WebKit2/Shared/ContextMenuContextData.cpp</a></li>
<li><a href="#trunkSourceWebKit2SharedWebCoreArgumentCoderscpp">trunk/Source/WebKit2/Shared/WebCoreArgumentCoders.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageWebFramecpp">trunk/Source/WebKit2/WebProcess/WebPage/WebFrame.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageiosFindControllerIOSmm">trunk/Source/WebKit2/WebProcess/WebPage/ios/FindControllerIOS.mm</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageiosWebPageIOSmm">trunk/Source/WebKit2/WebProcess/WebPage/ios/WebPageIOS.mm</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (191048 => 191049)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2015-10-14 17:29:18 UTC (rev 191048)
+++ trunk/Source/WebCore/ChangeLog        2015-10-14 18:10:32 UTC (rev 191049)
</span><span class="lines">@@ -1,3 +1,136 @@
</span><ins>+2015-10-14 Simon Fraser <simon.fraser@apple.com>
+
+ Change GraphicsContext image-drawing functions to take references
+ https://bugs.webkit.org/show_bug.cgi?id=150108
+
+ Reviewed by Tim Horton and Sam Weinig.
+
+ Change GraphicsContext::drawImage(), drawTiledImage(), drawImageBuffer(), clipToImageBuffer()
+ and isCompatibleWithBuffer() to take references, and adjust calling code, adding
+ null-checks where necessary.
+
+ * css/CSSCrossfadeValue.cpp:
+ (WebCore::CSSCrossfadeValue::image):
+ * css/CSSFilterImageValue.cpp:
+ (WebCore::CSSFilterImageValue::image):
+ * html/HTMLCanvasElement.cpp:
+ (WebCore::HTMLCanvasElement::paint):
+ * html/canvas/CanvasRenderingContext2D.cpp:
+ (WebCore::CanvasRenderingContext2D::drawImage):
+ (WebCore::CanvasRenderingContext2D::compositeBuffer):
+ (WebCore::drawImageToContext):
+ (WebCore::CanvasRenderingContext2D::fullCanvasCompositedDrawImage):
+ (WebCore::CanvasRenderingContext2D::drawTextInternal):
+ * html/canvas/CanvasRenderingContext2D.h:
+ * html/canvas/WebGL2RenderingContext.cpp:
+ (WebCore::WebGL2RenderingContext::texSubImage2D):
+ * html/canvas/WebGLRenderingContext.cpp:
+ (WebCore::WebGLRenderingContext::texSubImage2D):
+ * html/canvas/WebGLRenderingContextBase.cpp:
+ (WebCore::WebGLRenderingContextBase::drawImageIntoBuffer):
+ (WebCore::WebGLRenderingContextBase::texImage2D):
+ * html/canvas/WebGLRenderingContextBase.h:
+ * platform/ScrollView.cpp:
+ (WebCore::ScrollView::paintPanScrollIcon):
+ * platform/graphics/CrossfadeGeneratedImage.cpp:
+ (WebCore::CrossfadeGeneratedImage::CrossfadeGeneratedImage):
+ (WebCore::drawCrossfadeSubimage):
+ (WebCore::CrossfadeGeneratedImage::drawCrossfade):
+ * platform/graphics/CrossfadeGeneratedImage.h:
+ * platform/graphics/GradientImage.cpp:
+ (WebCore::GradientImage::drawPattern):
+ * platform/graphics/GraphicsContext.cpp:
+ (WebCore::GraphicsContext::drawImage):
+ (WebCore::GraphicsContext::drawTiledImage):
+ (WebCore::GraphicsContext::drawImageBuffer):
+ (WebCore::GraphicsContext::clipToImageBuffer):
+ (WebCore::GraphicsContext::isCompatibleWithBuffer):
+ * platform/graphics/GraphicsContext.h:
+ * platform/graphics/ShadowBlur.cpp:
+ (WebCore::ShadowBlur::drawShadowBuffer):
+ (WebCore::ShadowBlur::drawRectShadowWithoutTiling):
+ (WebCore::ShadowBlur::drawInsetShadowWithoutTiling):
+ (WebCore::ShadowBlur::drawInsetShadowWithTiling):
+ (WebCore::ShadowBlur::drawRectShadowWithTiling):
+ (WebCore::ShadowBlur::drawLayerPieces):
+ (WebCore::ShadowBlur::endShadowLayer):
+ * platform/graphics/cairo/ImageBufferCairo.cpp:
+ (WebCore::ImageBuffer::draw):
+ * platform/graphics/cg/PDFDocumentImage.cpp:
+ (WebCore::PDFDocumentImage::draw):
+ * platform/graphics/filters/FEBlend.cpp:
+ (WebCore::FEBlend::platformApplySoftware):
+ * platform/graphics/filters/FEColorMatrix.cpp:
+ (WebCore::FEColorMatrix::platformApplySoftware):
+ * platform/graphics/filters/FEComposite.cpp:
+ (WebCore::FEComposite::platformApplySoftware):
+ * platform/graphics/filters/FEDropShadow.cpp:
+ (WebCore::FEDropShadow::platformApplySoftware):
+ * platform/graphics/filters/FEMerge.cpp:
+ (WebCore::FEMerge::platformApplySoftware):
+ * platform/graphics/filters/FEOffset.cpp:
+ (WebCore::FEOffset::platformApplySoftware):
+ * platform/graphics/filters/FETile.cpp:
+ (WebCore::FETile::platformApplySoftware):
+ * platform/graphics/filters/SourceAlpha.cpp:
+ (WebCore::SourceAlpha::platformApplySoftware):
+ * platform/graphics/filters/SourceGraphic.cpp:
+ (WebCore::SourceGraphic::platformApplySoftware):
+ * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
+ (WebCore::MediaPlayerPrivateGStreamerBase::paint):
+ * platform/graphics/texmap/coordinated/CoordinatedImageBacking.cpp:
+ (WebCore::ImageBackingSurfaceClient::ImageBackingSurfaceClient):
+ (WebCore::CoordinatedImageBacking::update):
+ * platform/mac/ThemeMac.mm:
+ (WebCore::ThemeMac::drawCellOrFocusRingWithViewIntoContext):
+ * rendering/FilterEffectRenderer.cpp:
+ (WebCore::FilterEffectRendererHelper::applyFilterEffect):
+ * rendering/ImageQualityController.cpp:
+ (WebCore::ImageQualityController::shouldPaintAtLowQuality):
+ * rendering/ImageQualityController.h:
+ * rendering/RenderBoxModelObject.cpp:
+ (WebCore::RenderBoxModelObject::shouldPaintAtLowQuality):
+ (WebCore::RenderBoxModelObject::paintFillLayerExtended):
+ * rendering/RenderBoxModelObject.h:
+ * rendering/RenderEmbeddedObject.cpp:
+ (WebCore::RenderEmbeddedObject::paintSnapshotImage):
+ (WebCore::RenderEmbeddedObject::paintContents):
+ * rendering/RenderEmbeddedObject.h:
+ * rendering/RenderImage.cpp:
+ (WebCore::RenderImage::paintReplaced):
+ (WebCore::RenderImage::paintIntoRect):
+ * rendering/RenderImageResourceStyleImage.cpp:
+ (WebCore::RenderImageResourceStyleImage::shutdown):
+ (WebCore::RenderImageResourceStyleImage::image):
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::drawPlatformResizerImage):
+ * rendering/RenderListMarker.cpp:
+ (WebCore::RenderListMarker::paint):
+ * rendering/RenderSnapshottedPlugIn.cpp:
+ (WebCore::RenderSnapshottedPlugIn::paintSnapshot):
+ * rendering/RenderThemeMac.mm:
+ (WebCore::RenderThemeMac::paintProgressBar):
+ (WebCore::RenderThemeMac::paintSnapshottedPluginOverlay):
+ * rendering/RenderThemeWin.cpp:
+ (WebCore::RenderThemeWin::paintSearchFieldCancelButton):
+ (WebCore::RenderThemeWin::paintSearchFieldResultsDecorationPart):
+ (WebCore::RenderThemeWin::paintSearchFieldResultsButton):
+ * rendering/shapes/Shape.cpp:
+ (WebCore::Shape::createRasterShape):
+ * rendering/shapes/ShapeOutsideInfo.cpp:
+ (WebCore::ShapeOutsideInfo::createShapeForImage): Deleted.
+ * rendering/style/NinePieceImage.cpp:
+ (WebCore::NinePieceImage::paint):
+ * rendering/svg/RenderSVGImage.cpp:
+ (WebCore::RenderSVGImage::paintForeground):
+ * rendering/svg/RenderSVGResourceFilter.cpp:
+ (WebCore::RenderSVGResourceFilter::postApplyResource):
+ * rendering/svg/SVGRenderingContext.cpp:
+ (WebCore::SVGRenderingContext::clipToImageBuffer):
+ (WebCore::SVGRenderingContext::bufferForeground):
+ * svg/graphics/filters/SVGFEImage.cpp:
+ (WebCore::FEImage::platformApplySoftware):
+
</ins><span class="cx"> 2015-10-14 Said Abou-Hallawa <sabouhallawa@apple.com>
</span><span class="cx">
</span><span class="cx"> REGRESSION(r53318): background-repeat: space with gradients doesn't render correctly
</span></span></pre></div>
<a id="trunkSourceWebCorecssCSSCrossfadeValuecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/CSSCrossfadeValue.cpp (191048 => 191049)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/CSSCrossfadeValue.cpp        2015-10-14 17:29:18 UTC (rev 191048)
+++ trunk/Source/WebCore/css/CSSCrossfadeValue.cpp        2015-10-14 18:10:32 UTC (rev 191049)
</span><span class="lines">@@ -165,7 +165,7 @@
</span><span class="cx"> if (!fromImage || !toImage)
</span><span class="cx"> return Image::nullImage();
</span><span class="cx">
</span><del>- m_generatedImage = CrossfadeGeneratedImage::create(fromImage, toImage, m_percentageValue->getFloatValue(), fixedSize(renderer), size);
</del><ins>+ m_generatedImage = CrossfadeGeneratedImage::create(*fromImage, *toImage, m_percentageValue->getFloatValue(), fixedSize(renderer), size);
</ins><span class="cx">
</span><span class="cx"> return m_generatedImage;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorecssCSSFilterImageValuecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/CSSFilterImageValue.cpp (191048 => 191049)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/CSSFilterImageValue.cpp        2015-10-14 17:29:18 UTC (rev 191048)
+++ trunk/Source/WebCore/css/CSSFilterImageValue.cpp        2015-10-14 18:10:32 UTC (rev 191049)
</span><span class="lines">@@ -124,8 +124,9 @@
</span><span class="cx"> std::unique_ptr<ImageBuffer> texture = ImageBuffer::create(size, Unaccelerated);
</span><span class="cx"> if (!texture)
</span><span class="cx"> return Image::nullImage();
</span><ins>+
</ins><span class="cx"> FloatRect imageRect = FloatRect(FloatPoint(), size);
</span><del>- texture->context().drawImage(image, ColorSpaceDeviceRGB, imageRect);
</del><ins>+ texture->context().drawImage(*image, ColorSpaceDeviceRGB, imageRect);
</ins><span class="cx">
</span><span class="cx"> RefPtr<FilterEffectRenderer> filterRenderer = FilterEffectRenderer::create();
</span><span class="cx"> filterRenderer->setSourceImage(WTF::move(texture));
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLCanvasElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLCanvasElement.cpp (191048 => 191049)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLCanvasElement.cpp        2015-10-14 17:29:18 UTC (rev 191048)
+++ trunk/Source/WebCore/html/HTMLCanvasElement.cpp        2015-10-14 18:10:32 UTC (rev 191049)
</span><span class="lines">@@ -388,9 +388,9 @@
</span><span class="cx"> #if ENABLE(CSS_IMAGE_ORIENTATION)
</span><span class="cx"> orientationDescription.setImageOrientationEnum(renderer()->style().imageOrientation());
</span><span class="cx"> #endif
</span><del>- context.drawImage(m_presentedImage.get(), ColorSpaceDeviceRGB, snappedIntRect(r), ImagePaintingOptions(orientationDescription, useLowQualityScale));
</del><ins>+ context.drawImage(*m_presentedImage, ColorSpaceDeviceRGB, snappedIntRect(r), ImagePaintingOptions(orientationDescription, useLowQualityScale));
</ins><span class="cx"> } else
</span><del>- context.drawImageBuffer(imageBuffer, ColorSpaceDeviceRGB, snappedIntRect(r), useLowQualityScale);
</del><ins>+ context.drawImageBuffer(*imageBuffer, ColorSpaceDeviceRGB, snappedIntRect(r), useLowQualityScale);
</ins><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlcanvasCanvasRenderingContext2Dcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp (191048 => 191049)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp        2015-10-14 17:29:18 UTC (rev 191048)
+++ trunk/Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp        2015-10-14 18:10:32 UTC (rev 191049)
</span><span class="lines">@@ -1448,17 +1448,17 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> if (rectContainsCanvas(normalizedDstRect)) {
</span><del>- c->drawImage(image, ColorSpaceDeviceRGB, normalizedDstRect, normalizedSrcRect, ImagePaintingOptions(op, blendMode));
</del><ins>+ c->drawImage(*image, ColorSpaceDeviceRGB, normalizedDstRect, normalizedSrcRect, ImagePaintingOptions(op, blendMode));
</ins><span class="cx"> didDrawEntireCanvas();
</span><span class="cx"> } else if (isFullCanvasCompositeMode(op)) {
</span><del>- fullCanvasCompositedDrawImage(image, ColorSpaceDeviceRGB, normalizedDstRect, normalizedSrcRect, op);
</del><ins>+ fullCanvasCompositedDrawImage(*image, ColorSpaceDeviceRGB, normalizedDstRect, normalizedSrcRect, op);
</ins><span class="cx"> didDrawEntireCanvas();
</span><span class="cx"> } else if (op == CompositeCopy) {
</span><span class="cx"> clearCanvas();
</span><del>- c->drawImage(image, ColorSpaceDeviceRGB, normalizedDstRect, normalizedSrcRect, ImagePaintingOptions(op, blendMode));
</del><ins>+ c->drawImage(*image, ColorSpaceDeviceRGB, normalizedDstRect, normalizedSrcRect, ImagePaintingOptions(op, blendMode));
</ins><span class="cx"> didDrawEntireCanvas();
</span><span class="cx"> } else {
</span><del>- c->drawImage(image, ColorSpaceDeviceRGB, normalizedDstRect, normalizedSrcRect, ImagePaintingOptions(op, blendMode));
</del><ins>+ c->drawImage(*image, ColorSpaceDeviceRGB, normalizedDstRect, normalizedSrcRect, ImagePaintingOptions(op, blendMode));
</ins><span class="cx"> didDraw(normalizedDstRect);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -1536,17 +1536,17 @@
</span><span class="cx"> #endif
</span><span class="cx">
</span><span class="cx"> if (rectContainsCanvas(dstRect)) {
</span><del>- c->drawImageBuffer(buffer, ColorSpaceDeviceRGB, dstRect, srcRect, ImagePaintingOptions(state().globalComposite, state().globalBlend));
</del><ins>+ c->drawImageBuffer(*buffer, ColorSpaceDeviceRGB, dstRect, srcRect, ImagePaintingOptions(state().globalComposite, state().globalBlend));
</ins><span class="cx"> didDrawEntireCanvas();
</span><span class="cx"> } else if (isFullCanvasCompositeMode(state().globalComposite)) {
</span><del>- fullCanvasCompositedDrawImage(buffer, ColorSpaceDeviceRGB, dstRect, srcRect, state().globalComposite);
</del><ins>+ fullCanvasCompositedDrawImage(*buffer, ColorSpaceDeviceRGB, dstRect, srcRect, state().globalComposite);
</ins><span class="cx"> didDrawEntireCanvas();
</span><span class="cx"> } else if (state().globalComposite == CompositeCopy) {
</span><span class="cx"> clearCanvas();
</span><del>- c->drawImageBuffer(buffer, ColorSpaceDeviceRGB, dstRect, srcRect, ImagePaintingOptions(state().globalComposite, state().globalBlend));
</del><ins>+ c->drawImageBuffer(*buffer, ColorSpaceDeviceRGB, dstRect, srcRect, ImagePaintingOptions(state().globalComposite, state().globalBlend));
</ins><span class="cx"> didDrawEntireCanvas();
</span><span class="cx"> } else {
</span><del>- c->drawImageBuffer(buffer, ColorSpaceDeviceRGB, dstRect, srcRect, ImagePaintingOptions(state().globalComposite, state().globalBlend));
</del><ins>+ c->drawImageBuffer(*buffer, ColorSpaceDeviceRGB, dstRect, srcRect, ImagePaintingOptions(state().globalComposite, state().globalBlend));
</ins><span class="cx"> didDraw(dstRect);
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="lines">@@ -1709,7 +1709,7 @@
</span><span class="cx"> return ImageBuffer::create(bufferRect.size(), isAccelerated() ? Accelerated : Unaccelerated);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void CanvasRenderingContext2D::compositeBuffer(ImageBuffer* buffer, const IntRect& bufferRect, CompositeOperator op)
</del><ins>+void CanvasRenderingContext2D::compositeBuffer(ImageBuffer& buffer, const IntRect& bufferRect, CompositeOperator op)
</ins><span class="cx"> {
</span><span class="cx"> IntRect canvasRect(0, 0, canvas()->width(), canvas()->height());
</span><span class="cx"> canvasRect = canvas()->baseTransform().mapRect(canvasRect);
</span><span class="lines">@@ -1730,17 +1730,17 @@
</span><span class="cx"> c->restore();
</span><span class="cx"> }
</span><span class="cx">
</span><del>-static void drawImageToContext(Image* image, GraphicsContext& context, ColorSpace styleColorSpace, const FloatRect& dest, const FloatRect& src, CompositeOperator op)
</del><ins>+static void drawImageToContext(Image& image, GraphicsContext& context, ColorSpace styleColorSpace, const FloatRect& dest, const FloatRect& src, CompositeOperator op)
</ins><span class="cx"> {
</span><span class="cx"> context.drawImage(image, styleColorSpace, dest, src, op);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-static void drawImageToContext(ImageBuffer* imageBuffer, GraphicsContext& context, ColorSpace styleColorSpace, const FloatRect& dest, const FloatRect& src, CompositeOperator op)
</del><ins>+static void drawImageToContext(ImageBuffer& imageBuffer, GraphicsContext& context, ColorSpace styleColorSpace, const FloatRect& dest, const FloatRect& src, CompositeOperator op)
</ins><span class="cx"> {
</span><span class="cx"> context.drawImageBuffer(imageBuffer, styleColorSpace, dest, src, op);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-template<class T> void CanvasRenderingContext2D::fullCanvasCompositedDrawImage(T* image, ColorSpace styleColorSpace, const FloatRect& dest, const FloatRect& src, CompositeOperator op)
</del><ins>+template<class T> void CanvasRenderingContext2D::fullCanvasCompositedDrawImage(T& image, ColorSpace styleColorSpace, const FloatRect& dest, const FloatRect& src, CompositeOperator op)
</ins><span class="cx"> {
</span><span class="cx"> ASSERT(isFullCanvasCompositeMode(op));
</span><span class="cx">
</span><span class="lines">@@ -1768,7 +1768,7 @@
</span><span class="cx"> buffer->context().concatCTM(effectiveTransform);
</span><span class="cx"> drawImageToContext(image, buffer->context(), styleColorSpace, adjustedDest, src, CompositeSourceOver);
</span><span class="cx">
</span><del>- compositeBuffer(buffer.get(), bufferRect, op);
</del><ins>+ compositeBuffer(*buffer, bufferRect, op);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void CanvasRenderingContext2D::prepareGradientForDashboard(CanvasGradient& gradient) const
</span><span class="lines">@@ -2419,7 +2419,7 @@
</span><span class="cx">
</span><span class="cx"> // The slop built in to this mask rect matches the heuristic used in FontCGWin.cpp for GDI text.
</span><span class="cx"> FloatRect textRect = FloatRect(location.x() - fontMetrics.height() / 2, location.y() - fontMetrics.ascent() - fontMetrics.lineGap(),
</span><del>- width + fontMetrics.height(), fontMetrics.lineSpacing());
</del><ins>+ width + fontMetrics.height(), fontMetrics.lineSpacing());
</ins><span class="cx"> if (!fill)
</span><span class="cx"> inflateStrokeRect(textRect);
</span><span class="cx">
</span><span class="lines">@@ -2461,6 +2461,8 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> std::unique_ptr<ImageBuffer> maskImage = c->createCompatibleBuffer(maskRect.size());
</span><ins>+ if (!maskImage)
+ return;
</ins><span class="cx">
</span><span class="cx"> GraphicsContext& maskImageContext = maskImage->context();
</span><span class="cx">
</span><span class="lines">@@ -2484,7 +2486,7 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> GraphicsContextStateSaver stateSaver(*c);
</span><del>- c->clipToImageBuffer(maskImage.get(), maskRect);
</del><ins>+ c->clipToImageBuffer(*maskImage, maskRect);
</ins><span class="cx"> drawStyle.applyFillColor(c);
</span><span class="cx"> c->fillRect(maskRect);
</span><span class="cx"> return;
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlcanvasCanvasRenderingContext2Dh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/canvas/CanvasRenderingContext2D.h (191048 => 191049)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/canvas/CanvasRenderingContext2D.h        2015-10-14 17:29:18 UTC (rev 191048)
+++ trunk/Source/WebCore/html/canvas/CanvasRenderingContext2D.h        2015-10-14 18:10:32 UTC (rev 191049)
</span><span class="lines">@@ -363,11 +363,11 @@
</span><span class="cx">
</span><span class="cx"> template<class T> IntRect calculateCompositingBufferRect(const T&, IntSize*);
</span><span class="cx"> std::unique_ptr<ImageBuffer> createCompositingBuffer(const IntRect&);
</span><del>- void compositeBuffer(ImageBuffer*, const IntRect&, CompositeOperator);
</del><ins>+ void compositeBuffer(ImageBuffer&, const IntRect&, CompositeOperator);
</ins><span class="cx">
</span><span class="cx"> void inflateStrokeRect(FloatRect&) const;
</span><span class="cx">
</span><del>- template<class T> void fullCanvasCompositedDrawImage(T*, ColorSpace, const FloatRect&, const FloatRect&, CompositeOperator);
</del><ins>+ template<class T> void fullCanvasCompositedDrawImage(T&, ColorSpace, const FloatRect&, const FloatRect&, CompositeOperator);
</ins><span class="cx">
</span><span class="cx"> void prepareGradientForDashboard(CanvasGradient& gradient) const;
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlcanvasWebGL2RenderingContextcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/canvas/WebGL2RenderingContext.cpp (191048 => 191049)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/canvas/WebGL2RenderingContext.cpp        2015-10-14 17:29:18 UTC (rev 191048)
+++ trunk/Source/WebCore/html/canvas/WebGL2RenderingContext.cpp        2015-10-14 18:10:32 UTC (rev 191049)
</span><span class="lines">@@ -1419,8 +1419,11 @@
</span><span class="cx"> return;
</span><span class="cx">
</span><span class="cx"> RefPtr<Image> imageForRender = image->cachedImage()->imageForRenderer(image->renderer());
</span><ins>+ if (!imageForRender)
+ return;
+
</ins><span class="cx"> if (imageForRender->isSVGImage())
</span><del>- imageForRender = drawImageIntoBuffer(imageForRender.get(), image->width(), image->height(), 1);
</del><ins>+ imageForRender = drawImageIntoBuffer(*imageForRender, image->width(), image->height(), 1);
</ins><span class="cx">
</span><span class="cx"> if (!imageForRender || !validateTexFunc("texSubImage2D", TexSubImage, SourceHTMLImageElement, target, level, GraphicsContext3D::NONE, imageForRender->width(), imageForRender->height(), 0, format, type, xoffset, yoffset))
</span><span class="cx"> return;
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlcanvasWebGLRenderingContextcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/canvas/WebGLRenderingContext.cpp (191048 => 191049)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/canvas/WebGLRenderingContext.cpp        2015-10-14 17:29:18 UTC (rev 191048)
+++ trunk/Source/WebCore/html/canvas/WebGLRenderingContext.cpp        2015-10-14 18:10:32 UTC (rev 191049)
</span><span class="lines">@@ -623,8 +623,11 @@
</span><span class="cx"> return;
</span><span class="cx">
</span><span class="cx"> RefPtr<Image> imageForRender = image->cachedImage()->imageForRenderer(image->renderer());
</span><ins>+ if (!imageForRender)
+ return;
+
</ins><span class="cx"> if (imageForRender->isSVGImage())
</span><del>- imageForRender = drawImageIntoBuffer(imageForRender.get(), image->width(), image->height(), 1);
</del><ins>+ imageForRender = drawImageIntoBuffer(*imageForRender, image->width(), image->height(), 1);
</ins><span class="cx">
</span><span class="cx"> if (!imageForRender || !validateTexFunc("texSubImage2D", TexSubImage, SourceHTMLImageElement, target, level, format, imageForRender->width(), imageForRender->height(), 0, format, type, xoffset, yoffset))
</span><span class="cx"> return;
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlcanvasWebGLRenderingContextBasecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp (191048 => 191049)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp        2015-10-14 17:29:18 UTC (rev 191048)
+++ trunk/Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp        2015-10-14 18:10:32 UTC (rev 191049)
</span><span class="lines">@@ -3164,7 +3164,7 @@
</span><span class="cx"> m_context->pixelStorei(GraphicsContext3D::UNPACK_ALIGNMENT, m_unpackAlignment);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-PassRefPtr<Image> WebGLRenderingContextBase::drawImageIntoBuffer(Image* image, int width, int height, int deviceScaleFactor)
</del><ins>+PassRefPtr<Image> WebGLRenderingContextBase::drawImageIntoBuffer(Image& image, int width, int height, int deviceScaleFactor)
</ins><span class="cx"> {
</span><span class="cx"> IntSize size(width, height);
</span><span class="cx"> size.scale(deviceScaleFactor);
</span><span class="lines">@@ -3174,7 +3174,7 @@
</span><span class="cx"> return nullptr;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- FloatRect srcRect(FloatPoint(), image->size());
</del><ins>+ FloatRect srcRect(FloatPoint(), image.size());
</ins><span class="cx"> FloatRect destRect(FloatPoint(), size);
</span><span class="cx"> buf->context().drawImage(image, ColorSpaceDeviceRGB, destRect, srcRect);
</span><span class="cx"> return buf->copyImage(ImageBuffer::fastCopyImageMode());
</span><span class="lines">@@ -3188,8 +3188,11 @@
</span><span class="cx"> return;
</span><span class="cx">
</span><span class="cx"> RefPtr<Image> imageForRender = image->cachedImage()->imageForRenderer(image->renderer());
</span><ins>+ if (!imageForRender)
+ return;
+
</ins><span class="cx"> if (imageForRender->isSVGImage())
</span><del>- imageForRender = drawImageIntoBuffer(imageForRender.get(), image->width(), image->height(), 1);
</del><ins>+ imageForRender = drawImageIntoBuffer(*imageForRender, image->width(), image->height(), 1);
</ins><span class="cx">
</span><span class="cx"> if (!imageForRender || !validateTexFunc("texImage2D", TexImage, SourceHTMLImageElement, target, level, internalformat, imageForRender->width(), imageForRender->height(), 0, format, type, 0, 0))
</span><span class="cx"> return;
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlcanvasWebGLRenderingContextBaseh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/canvas/WebGLRenderingContextBase.h (191048 => 191049)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/canvas/WebGLRenderingContextBase.h        2015-10-14 17:29:18 UTC (rev 191048)
+++ trunk/Source/WebCore/html/canvas/WebGLRenderingContextBase.h        2015-10-14 18:10:32 UTC (rev 191049)
</span><span class="lines">@@ -426,7 +426,7 @@
</span><span class="cx"> // Adds a compressed texture format.
</span><span class="cx"> void addCompressedTextureFormat(GC3Denum);
</span><span class="cx">
</span><del>- PassRefPtr<Image> drawImageIntoBuffer(Image*, int width, int height, int deviceScaleFactor);
</del><ins>+ PassRefPtr<Image> drawImageIntoBuffer(Image&, int width, int height, int deviceScaleFactor);
</ins><span class="cx">
</span><span class="cx"> #if ENABLE(VIDEO)
</span><span class="cx"> PassRefPtr<Image> videoFrameToImage(HTMLVideoElement*, BackingStoreCopy, ExceptionCode&);
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformScrollViewcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/ScrollView.cpp (191048 => 191049)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/ScrollView.cpp        2015-10-14 17:29:18 UTC (rev 191048)
+++ trunk/Source/WebCore/platform/ScrollView.cpp        2015-10-14 18:10:32 UTC (rev 191049)
</span><span class="lines">@@ -1178,10 +1178,12 @@
</span><span class="cx"> void ScrollView::paintPanScrollIcon(GraphicsContext& context)
</span><span class="cx"> {
</span><span class="cx"> static Image* panScrollIcon = Image::loadPlatformResource("panIcon").leakRef();
</span><ins>+ if (!panScrollIcon)
+ return;
</ins><span class="cx"> IntPoint iconGCPoint = m_panScrollIconPoint;
</span><span class="cx"> if (parent())
</span><span class="cx"> iconGCPoint = parent()->windowToContents(iconGCPoint);
</span><del>- context.drawImage(panScrollIcon, ColorSpaceDeviceRGB, iconGCPoint);
</del><ins>+ context.drawImage(*panScrollIcon, ColorSpaceDeviceRGB, iconGCPoint);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void ScrollView::paint(GraphicsContext& context, const IntRect& rect)
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsCrossfadeGeneratedImagecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/CrossfadeGeneratedImage.cpp (191048 => 191049)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/CrossfadeGeneratedImage.cpp        2015-10-14 17:29:18 UTC (rev 191048)
+++ trunk/Source/WebCore/platform/graphics/CrossfadeGeneratedImage.cpp        2015-10-14 18:10:32 UTC (rev 191049)
</span><span class="lines">@@ -32,7 +32,7 @@
</span><span class="cx">
</span><span class="cx"> namespace WebCore {
</span><span class="cx">
</span><del>-CrossfadeGeneratedImage::CrossfadeGeneratedImage(Image* fromImage, Image* toImage, float percentage, const FloatSize& crossfadeSize, const FloatSize& size)
</del><ins>+CrossfadeGeneratedImage::CrossfadeGeneratedImage(Image& fromImage, Image& toImage, float percentage, const FloatSize& crossfadeSize, const FloatSize& size)
</ins><span class="cx"> : m_fromImage(fromImage)
</span><span class="cx"> , m_toImage(toImage)
</span><span class="cx"> , m_percentage(percentage)
</span><span class="lines">@@ -41,12 +41,12 @@
</span><span class="cx"> setContainerSize(size);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-static void drawCrossfadeSubimage(GraphicsContext& context, Image* image, CompositeOperator operation, float opacity, const FloatSize& targetSize)
</del><ins>+static void drawCrossfadeSubimage(GraphicsContext& context, Image& image, CompositeOperator operation, float opacity, const FloatSize& targetSize)
</ins><span class="cx"> {
</span><del>- FloatSize imageSize = image->size();
</del><ins>+ FloatSize imageSize = image.size();
</ins><span class="cx">
</span><span class="cx"> // SVGImage resets the opacity when painting, so we have to use transparency layers to accurately paint one at a given opacity.
</span><del>- bool useTransparencyLayer = image->isSVGImage();
</del><ins>+ bool useTransparencyLayer = image.isSVGImage();
</ins><span class="cx">
</span><span class="cx"> GraphicsContextStateSaver stateSaver(context);
</span><span class="cx">
</span><span class="lines">@@ -68,7 +68,7 @@
</span><span class="cx"> void CrossfadeGeneratedImage::drawCrossfade(GraphicsContext& context)
</span><span class="cx"> {
</span><span class="cx"> // Draw nothing if either of the images hasn't loaded yet.
</span><del>- if (m_fromImage == Image::nullImage() || m_toImage == Image::nullImage())
</del><ins>+ if (m_fromImage.ptr() == Image::nullImage() || m_toImage.ptr() == Image::nullImage())
</ins><span class="cx"> return;
</span><span class="cx">
</span><span class="cx"> GraphicsContextStateSaver stateSaver(context);
</span><span class="lines">@@ -76,8 +76,8 @@
</span><span class="cx"> context.clip(FloatRect(FloatPoint(), m_crossfadeSize));
</span><span class="cx"> context.beginTransparencyLayer(1);
</span><span class="cx">
</span><del>- drawCrossfadeSubimage(context, m_fromImage, CompositeSourceOver, 1 - m_percentage, m_crossfadeSize);
- drawCrossfadeSubimage(context, m_toImage, CompositePlusLighter, m_percentage, m_crossfadeSize);
</del><ins>+ drawCrossfadeSubimage(context, m_fromImage.get(), CompositeSourceOver, 1 - m_percentage, m_crossfadeSize);
+ drawCrossfadeSubimage(context, m_toImage.get(), CompositePlusLighter, m_percentage, m_crossfadeSize);
</ins><span class="cx">
</span><span class="cx"> context.endTransparencyLayer();
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsCrossfadeGeneratedImageh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/CrossfadeGeneratedImage.h (191048 => 191049)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/CrossfadeGeneratedImage.h        2015-10-14 17:29:18 UTC (rev 191048)
+++ trunk/Source/WebCore/platform/graphics/CrossfadeGeneratedImage.h        2015-10-14 18:10:32 UTC (rev 191049)
</span><span class="lines">@@ -36,7 +36,7 @@
</span><span class="cx">
</span><span class="cx"> class CrossfadeGeneratedImage final : public GeneratedImage {
</span><span class="cx"> public:
</span><del>- static Ref<CrossfadeGeneratedImage> create(Image* fromImage, Image* toImage, float percentage, const FloatSize& crossfadeSize, const FloatSize& size)
</del><ins>+ static Ref<CrossfadeGeneratedImage> create(Image& fromImage, Image& toImage, float percentage, const FloatSize& crossfadeSize, const FloatSize& size)
</ins><span class="cx"> {
</span><span class="cx"> return adoptRef(*new CrossfadeGeneratedImage(fromImage, toImage, percentage, crossfadeSize, size));
</span><span class="cx"> }
</span><span class="lines">@@ -52,13 +52,13 @@
</span><span class="cx"> virtual void draw(GraphicsContext&, const FloatRect& dstRect, const FloatRect& srcRect, ColorSpace styleColorSpace, CompositeOperator, BlendMode, ImageOrientationDescription) override;
</span><span class="cx"> virtual void drawPattern(GraphicsContext&, const FloatRect& srcRect, const AffineTransform& patternTransform, const FloatPoint& phase, const FloatSize& spacing, ColorSpace styleColorSpace, CompositeOperator, const FloatRect& dstRect, BlendMode) override;
</span><span class="cx">
</span><del>- CrossfadeGeneratedImage(Image* fromImage, Image* toImage, float percentage, const FloatSize& crossfadeSize, const FloatSize&);
</del><ins>+ CrossfadeGeneratedImage(Image& fromImage, Image& toImage, float percentage, const FloatSize& crossfadeSize, const FloatSize&);
</ins><span class="cx">
</span><span class="cx"> private:
</span><span class="cx"> void drawCrossfade(GraphicsContext&);
</span><span class="cx">
</span><del>- Image* m_fromImage;
- Image* m_toImage;
</del><ins>+ Ref<Image> m_fromImage;
+ Ref<Image> m_toImage;
</ins><span class="cx">
</span><span class="cx"> float m_percentage;
</span><span class="cx"> FloatSize m_crossfadeSize;
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsGradientImagecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/GradientImage.cpp (191048 => 191049)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/GradientImage.cpp        2015-10-14 17:29:18 UTC (rev 191048)
+++ trunk/Source/WebCore/platform/graphics/GradientImage.cpp        2015-10-14 18:10:32 UTC (rev 191049)
</span><span class="lines">@@ -73,7 +73,7 @@
</span><span class="cx">
</span><span class="cx"> unsigned generatorHash = m_gradient->hash();
</span><span class="cx">
</span><del>- if (!m_cachedImageBuffer || m_cachedGeneratorHash != generatorHash || m_cachedAdjustedSize != adjustedSize || !destContext.isCompatibleWithBuffer(m_cachedImageBuffer.get())) {
</del><ins>+ if (!m_cachedImageBuffer || m_cachedGeneratorHash != generatorHash || m_cachedAdjustedSize != adjustedSize || !destContext.isCompatibleWithBuffer(*m_cachedImageBuffer)) {
</ins><span class="cx"> m_cachedImageBuffer = destContext.createCompatibleBuffer(adjustedSize, m_gradient->hasAlpha());
</span><span class="cx"> if (!m_cachedImageBuffer)
</span><span class="cx"> return;
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsGraphicsContextcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/GraphicsContext.cpp (191048 => 191049)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/GraphicsContext.cpp        2015-10-14 17:29:18 UTC (rev 191048)
+++ trunk/Source/WebCore/platform/graphics/GraphicsContext.cpp        2015-10-14 18:10:32 UTC (rev 191049)
</span><span class="lines">@@ -368,50 +368,45 @@
</span><span class="cx"> bidiRuns.deleteRuns();
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void GraphicsContext::drawImage(Image* image, ColorSpace colorSpace, const FloatPoint& destination, const ImagePaintingOptions& imagePaintingOptions)
</del><ins>+void GraphicsContext::drawImage(Image& image, ColorSpace colorSpace, const FloatPoint& destination, const ImagePaintingOptions& imagePaintingOptions)
</ins><span class="cx"> {
</span><del>- if (!image)
- return;
- drawImage(image, colorSpace, FloatRect(destination, image->size()), FloatRect(FloatPoint(), image->size()), imagePaintingOptions);
</del><ins>+ drawImage(image, colorSpace, FloatRect(destination, image.size()), FloatRect(FloatPoint(), image.size()), imagePaintingOptions);
</ins><span class="cx"> }
</span><span class="cx">
</span><del>-void GraphicsContext::drawImage(Image* image, ColorSpace colorSpace, const FloatRect& destination, const ImagePaintingOptions& imagePaintingOptions)
</del><ins>+void GraphicsContext::drawImage(Image& image, ColorSpace colorSpace, const FloatRect& destination, const ImagePaintingOptions& imagePaintingOptions)
</ins><span class="cx"> {
</span><del>- if (!image)
- return;
-
</del><span class="cx"> #if PLATFORM(IOS)
</span><del>- FloatRect srcRect(FloatPoint(), image->originalSize());
</del><ins>+ FloatRect srcRect(FloatPoint(), image.originalSize());
</ins><span class="cx"> #else
</span><del>- FloatRect srcRect(FloatPoint(), image->size());
</del><ins>+ FloatRect srcRect(FloatPoint(), image.size());
</ins><span class="cx"> #endif
</span><span class="cx">
</span><span class="cx"> drawImage(image, colorSpace, destination, srcRect, imagePaintingOptions);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void GraphicsContext::drawImage(Image* image, ColorSpace colorSpace, const FloatRect& destination, const FloatRect& source, const ImagePaintingOptions& imagePaintingOptions)
</del><ins>+void GraphicsContext::drawImage(Image& image, ColorSpace colorSpace, const FloatRect& destination, const FloatRect& source, const ImagePaintingOptions& imagePaintingOptions)
</ins><span class="cx"> {
</span><del>- if (paintingDisabled() || !image)
</del><ins>+ if (paintingDisabled())
</ins><span class="cx"> return;
</span><span class="cx">
</span><span class="cx"> // FIXME (49002): Should be InterpolationLow
</span><span class="cx"> InterpolationQualityMaintainer interpolationQualityForThisScope(*this, imagePaintingOptions.m_useLowQualityScale ? InterpolationNone : imageInterpolationQuality());
</span><del>- image->draw(*this, destination, source, colorSpace, imagePaintingOptions.m_compositeOperator, imagePaintingOptions.m_blendMode, imagePaintingOptions.m_orientationDescription);
</del><ins>+ image.draw(*this, destination, source, colorSpace, imagePaintingOptions.m_compositeOperator, imagePaintingOptions.m_blendMode, imagePaintingOptions.m_orientationDescription);
</ins><span class="cx"> }
</span><span class="cx">
</span><del>-void GraphicsContext::drawTiledImage(Image* image, ColorSpace colorSpace, const FloatRect& destination, const FloatPoint& source, const FloatSize& tileSize, const FloatSize& spacing, const ImagePaintingOptions& imagePaintingOptions)
</del><ins>+void GraphicsContext::drawTiledImage(Image& image, ColorSpace colorSpace, const FloatRect& destination, const FloatPoint& source, const FloatSize& tileSize, const FloatSize& spacing, const ImagePaintingOptions& imagePaintingOptions)
</ins><span class="cx"> {
</span><del>- if (paintingDisabled() || !image)
</del><ins>+ if (paintingDisabled())
</ins><span class="cx"> return;
</span><span class="cx">
</span><span class="cx"> InterpolationQualityMaintainer interpolationQualityForThisScope(*this, imagePaintingOptions.m_useLowQualityScale ? InterpolationLow : imageInterpolationQuality());
</span><del>- image->drawTiled(*this, destination, source, tileSize, spacing, colorSpace, imagePaintingOptions.m_compositeOperator, imagePaintingOptions.m_blendMode);
</del><ins>+ image.drawTiled(*this, destination, source, tileSize, spacing, colorSpace, imagePaintingOptions.m_compositeOperator, imagePaintingOptions.m_blendMode);
</ins><span class="cx"> }
</span><span class="cx">
</span><del>-void GraphicsContext::drawTiledImage(Image* image, ColorSpace colorSpace, const FloatRect& destination, const FloatRect& source, const FloatSize& tileScaleFactor,
</del><ins>+void GraphicsContext::drawTiledImage(Image& image, ColorSpace colorSpace, const FloatRect& destination, const FloatRect& source, const FloatSize& tileScaleFactor,
</ins><span class="cx"> Image::TileRule hRule, Image::TileRule vRule, const ImagePaintingOptions& imagePaintingOptions)
</span><span class="cx"> {
</span><del>- if (paintingDisabled() || !image)
</del><ins>+ if (paintingDisabled())
</ins><span class="cx"> return;
</span><span class="cx">
</span><span class="cx"> if (hRule == Image::StretchTile && vRule == Image::StretchTile) {
</span><span class="lines">@@ -421,31 +416,27 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> InterpolationQualityMaintainer interpolationQualityForThisScope(*this, imagePaintingOptions.m_useLowQualityScale ? InterpolationLow : imageInterpolationQuality());
</span><del>- image->drawTiled(*this, destination, source, tileScaleFactor, hRule, vRule, colorSpace, imagePaintingOptions.m_compositeOperator);
</del><ins>+ image.drawTiled(*this, destination, source, tileScaleFactor, hRule, vRule, colorSpace, imagePaintingOptions.m_compositeOperator);
</ins><span class="cx"> }
</span><span class="cx">
</span><del>-void GraphicsContext::drawImageBuffer(ImageBuffer* image, ColorSpace colorSpace, const FloatPoint& destination, const ImagePaintingOptions& imagePaintingOptions)
</del><ins>+void GraphicsContext::drawImageBuffer(ImageBuffer& image, ColorSpace colorSpace, const FloatPoint& destination, const ImagePaintingOptions& imagePaintingOptions)
</ins><span class="cx"> {
</span><del>- if (!image)
- return;
- drawImageBuffer(image, colorSpace, FloatRect(destination, image->logicalSize()), FloatRect(FloatPoint(), image->logicalSize()), imagePaintingOptions);
</del><ins>+ drawImageBuffer(image, colorSpace, FloatRect(destination, image.logicalSize()), FloatRect(FloatPoint(), image.logicalSize()), imagePaintingOptions);
</ins><span class="cx"> }
</span><span class="cx">
</span><del>-void GraphicsContext::drawImageBuffer(ImageBuffer* image, ColorSpace colorSpace, const FloatRect& destination, const ImagePaintingOptions& imagePaintingOptions)
</del><ins>+void GraphicsContext::drawImageBuffer(ImageBuffer& image, ColorSpace colorSpace, const FloatRect& destination, const ImagePaintingOptions& imagePaintingOptions)
</ins><span class="cx"> {
</span><del>- if (!image)
- return;
- drawImageBuffer(image, colorSpace, destination, FloatRect(FloatPoint(), FloatSize(image->logicalSize())), imagePaintingOptions);
</del><ins>+ drawImageBuffer(image, colorSpace, destination, FloatRect(FloatPoint(), FloatSize(image.logicalSize())), imagePaintingOptions);
</ins><span class="cx"> }
</span><span class="cx">
</span><del>-void GraphicsContext::drawImageBuffer(ImageBuffer* image, ColorSpace colorSpace, const FloatRect& destination, const FloatRect& source, const ImagePaintingOptions& imagePaintingOptions)
</del><ins>+void GraphicsContext::drawImageBuffer(ImageBuffer& image, ColorSpace colorSpace, const FloatRect& destination, const FloatRect& source, const ImagePaintingOptions& imagePaintingOptions)
</ins><span class="cx"> {
</span><del>- if (paintingDisabled() || !image)
</del><ins>+ if (paintingDisabled())
</ins><span class="cx"> return;
</span><span class="cx">
</span><span class="cx"> // FIXME (49002): Should be InterpolationLow
</span><span class="cx"> InterpolationQualityMaintainer interpolationQualityForThisScope(*this, imagePaintingOptions.m_useLowQualityScale ? InterpolationNone : imageInterpolationQuality());
</span><del>- image->draw(*this, colorSpace, destination, source, imagePaintingOptions.m_compositeOperator, imagePaintingOptions.m_blendMode, imagePaintingOptions.m_useLowQualityScale);
</del><ins>+ image.draw(*this, colorSpace, destination, source, imagePaintingOptions.m_compositeOperator, imagePaintingOptions.m_blendMode, imagePaintingOptions.m_useLowQualityScale);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void GraphicsContext::clip(const IntRect& rect)
</span><span class="lines">@@ -478,11 +469,11 @@
</span><span class="cx"> clipOut(path);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void GraphicsContext::clipToImageBuffer(ImageBuffer* buffer, const FloatRect& rect)
</del><ins>+void GraphicsContext::clipToImageBuffer(ImageBuffer& buffer, const FloatRect& rect)
</ins><span class="cx"> {
</span><span class="cx"> if (paintingDisabled())
</span><span class="cx"> return;
</span><del>- buffer->clip(*this, rect);
</del><ins>+ buffer.clip(*this, rect);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> #if !USE(CG) && !USE(CAIRO)
</span><span class="lines">@@ -648,9 +639,9 @@
</span><span class="cx"> return buffer;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-bool GraphicsContext::isCompatibleWithBuffer(ImageBuffer* buffer) const
</del><ins>+bool GraphicsContext::isCompatibleWithBuffer(ImageBuffer& buffer) const
</ins><span class="cx"> {
</span><del>- GraphicsContext& bufferContext = buffer->context();
</del><ins>+ GraphicsContext& bufferContext = buffer.context();
</ins><span class="cx">
</span><span class="cx"> return scalesMatch(getCTM(), bufferContext.getCTM()) && isAcceleratedContext() == bufferContext.isAcceleratedContext();
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsGraphicsContexth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/GraphicsContext.h (191048 => 191049)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/GraphicsContext.h        2015-10-14 17:29:18 UTC (rev 191048)
+++ trunk/Source/WebCore/platform/graphics/GraphicsContext.h        2015-10-14 18:10:32 UTC (rev 191049)
</span><span class="lines">@@ -308,17 +308,17 @@
</span><span class="cx">
</span><span class="cx"> WEBCORE_EXPORT void strokeRect(const FloatRect&, float lineWidth);
</span><span class="cx">
</span><del>- WEBCORE_EXPORT void drawImage(Image*, ColorSpace, const FloatPoint& destination, const ImagePaintingOptions& = ImagePaintingOptions());
- WEBCORE_EXPORT void drawImage(Image*, ColorSpace, const FloatRect& destination, const ImagePaintingOptions& = ImagePaintingOptions());
- void drawImage(Image*, ColorSpace, const FloatRect& destination, const FloatRect& source, const ImagePaintingOptions& = ImagePaintingOptions());
</del><ins>+ WEBCORE_EXPORT void drawImage(Image&, ColorSpace, const FloatPoint& destination, const ImagePaintingOptions& = ImagePaintingOptions());
+ WEBCORE_EXPORT void drawImage(Image&, ColorSpace, const FloatRect& destination, const ImagePaintingOptions& = ImagePaintingOptions());
+ void drawImage(Image&, ColorSpace, const FloatRect& destination, const FloatRect& source, const ImagePaintingOptions& = ImagePaintingOptions());
</ins><span class="cx">
</span><del>- void drawTiledImage(Image*, ColorSpace, const FloatRect& destination, const FloatPoint& source, const FloatSize& tileSize, const FloatSize& spacing, const ImagePaintingOptions& = ImagePaintingOptions());
- void drawTiledImage(Image*, ColorSpace, const FloatRect& destination, const FloatRect& source, const FloatSize& tileScaleFactor,
</del><ins>+ void drawTiledImage(Image&, ColorSpace, const FloatRect& destination, const FloatPoint& source, const FloatSize& tileSize, const FloatSize& spacing, const ImagePaintingOptions& = ImagePaintingOptions());
+ void drawTiledImage(Image&, ColorSpace, const FloatRect& destination, const FloatRect& source, const FloatSize& tileScaleFactor,
</ins><span class="cx"> Image::TileRule, Image::TileRule, const ImagePaintingOptions& = ImagePaintingOptions());
</span><span class="cx">
</span><del>- WEBCORE_EXPORT void drawImageBuffer(ImageBuffer*, ColorSpace, const FloatPoint& destination, const ImagePaintingOptions& = ImagePaintingOptions());
- void drawImageBuffer(ImageBuffer*, ColorSpace, const FloatRect& destination, const ImagePaintingOptions& = ImagePaintingOptions());
- void drawImageBuffer(ImageBuffer*, ColorSpace, const FloatRect& destination, const FloatRect& source, const ImagePaintingOptions& = ImagePaintingOptions());
</del><ins>+ WEBCORE_EXPORT void drawImageBuffer(ImageBuffer&, ColorSpace, const FloatPoint& destination, const ImagePaintingOptions& = ImagePaintingOptions());
+ void drawImageBuffer(ImageBuffer&, ColorSpace, const FloatRect& destination, const ImagePaintingOptions& = ImagePaintingOptions());
+ void drawImageBuffer(ImageBuffer&, ColorSpace, const FloatRect& destination, const FloatRect& source, const ImagePaintingOptions& = ImagePaintingOptions());
</ins><span class="cx">
</span><span class="cx"> void drawPattern(Image&, const FloatRect& srcRect, const AffineTransform&, const FloatPoint& phase, const FloatSize& spacing, ColorSpace, CompositeOperator, const FloatRect& destRect, BlendMode = BlendModeNormal);
</span><span class="cx">
</span><span class="lines">@@ -333,7 +333,7 @@
</span><span class="cx"> void clipOutRoundedRect(const FloatRoundedRect&);
</span><span class="cx"> void clipPath(const Path&, WindRule);
</span><span class="cx"> void clipConvexPolygon(size_t numPoints, const FloatPoint*, bool antialias = true);
</span><del>- void clipToImageBuffer(ImageBuffer*, const FloatRect&);
</del><ins>+ void clipToImageBuffer(ImageBuffer&, const FloatRect&);
</ins><span class="cx">
</span><span class="cx"> IntRect clipBounds() const;
</span><span class="cx">
</span><span class="lines">@@ -443,7 +443,7 @@
</span><span class="cx"> // Create an image buffer compatible with this context, with suitable resolution
</span><span class="cx"> // for drawing into the buffer and then into this context.
</span><span class="cx"> std::unique_ptr<ImageBuffer> createCompatibleBuffer(const FloatSize&, bool hasAlpha = true) const;
</span><del>- bool isCompatibleWithBuffer(ImageBuffer*) const;
</del><ins>+ bool isCompatibleWithBuffer(ImageBuffer&) const;
</ins><span class="cx">
</span><span class="cx"> // This function applies the device scale factor to the context, making the context capable of
</span><span class="cx"> // acting as a base-level context for a HiDPI environment.
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsShadowBlurcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/ShadowBlur.cpp (191048 => 191049)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/ShadowBlur.cpp        2015-10-14 17:29:18 UTC (rev 191048)
+++ trunk/Source/WebCore/platform/graphics/ShadowBlur.cpp        2015-10-14 18:10:32 UTC (rev 191049)
</span><span class="lines">@@ -472,7 +472,7 @@
</span><span class="cx"> // but we may not have cleared it all, so clip to the filled part first.
</span><span class="cx"> graphicsContext.clip(FloatRect(m_layerOrigin, m_layerSize));
</span><span class="cx"> }
</span><del>- graphicsContext.clipToImageBuffer(m_layerImage, FloatRect(m_layerOrigin, bufferSize));
</del><ins>+ graphicsContext.clipToImageBuffer(*m_layerImage, FloatRect(m_layerOrigin, bufferSize));
</ins><span class="cx"> graphicsContext.setFillColor(m_color, m_colorSpace);
</span><span class="cx">
</span><span class="cx"> graphicsContext.clearShadow();
</span><span class="lines">@@ -593,7 +593,7 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> drawShadowBuffer(graphicsContext);
</span><del>- m_layerImage = 0;
</del><ins>+ m_layerImage = nullptr;
</ins><span class="cx"> ScratchBuffer::singleton().scheduleScratchBufferPurge();
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -634,7 +634,7 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> drawShadowBuffer(graphicsContext);
</span><del>- m_layerImage = 0;
</del><ins>+ m_layerImage = nullptr;
</ins><span class="cx"> ScratchBuffer::singleton().scheduleScratchBufferPurge();
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -731,7 +731,7 @@
</span><span class="cx">
</span><span class="cx"> drawLayerPieces(graphicsContext, destHoleBounds, holeRect.radii(), edgeSize, templateSize, InnerShadow);
</span><span class="cx">
</span><del>- m_layerImage = 0;
</del><ins>+ m_layerImage = nullptr;
</ins><span class="cx"> ScratchBuffer::singleton().scheduleScratchBufferPurge();
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -777,7 +777,7 @@
</span><span class="cx">
</span><span class="cx"> drawLayerPieces(graphicsContext, shadowBounds, shadowedRect.radii(), edgeSize, templateSize, OuterShadow);
</span><span class="cx">
</span><del>- m_layerImage = 0;
</del><ins>+ m_layerImage = nullptr;
</ins><span class="cx"> ScratchBuffer::singleton().scheduleScratchBufferPurge();
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -816,46 +816,46 @@
</span><span class="cx"> // Top side.
</span><span class="cx"> FloatRect tileRect = FloatRect(leftSlice, 0, templateSideLength, topSlice);
</span><span class="cx"> FloatRect destRect = FloatRect(centerRect.x(), centerRect.y() - topSlice, centerRect.width(), topSlice);
</span><del>- graphicsContext.drawImageBuffer(m_layerImage, ColorSpaceDeviceRGB, destRect, tileRect);
</del><ins>+ graphicsContext.drawImageBuffer(*m_layerImage, ColorSpaceDeviceRGB, destRect, tileRect);
</ins><span class="cx">
</span><span class="cx"> // Draw the bottom side.
</span><span class="cx"> tileRect.setY(templateSize.height() - bottomSlice);
</span><span class="cx"> tileRect.setHeight(bottomSlice);
</span><span class="cx"> destRect.setY(centerRect.maxY());
</span><span class="cx"> destRect.setHeight(bottomSlice);
</span><del>- graphicsContext.drawImageBuffer(m_layerImage, ColorSpaceDeviceRGB, destRect, tileRect);
</del><ins>+ graphicsContext.drawImageBuffer(*m_layerImage, ColorSpaceDeviceRGB, destRect, tileRect);
</ins><span class="cx">
</span><span class="cx"> // Left side.
</span><span class="cx"> tileRect = FloatRect(0, topSlice, leftSlice, templateSideLength);
</span><span class="cx"> destRect = FloatRect(centerRect.x() - leftSlice, centerRect.y(), leftSlice, centerRect.height());
</span><del>- graphicsContext.drawImageBuffer(m_layerImage, ColorSpaceDeviceRGB, destRect, tileRect);
</del><ins>+ graphicsContext.drawImageBuffer(*m_layerImage, ColorSpaceDeviceRGB, destRect, tileRect);
</ins><span class="cx">
</span><span class="cx"> // Right side.
</span><span class="cx"> tileRect.setX(templateSize.width() - rightSlice);
</span><span class="cx"> tileRect.setWidth(rightSlice);
</span><span class="cx"> destRect.setX(centerRect.maxX());
</span><span class="cx"> destRect.setWidth(rightSlice);
</span><del>- graphicsContext.drawImageBuffer(m_layerImage, ColorSpaceDeviceRGB, destRect, tileRect);
</del><ins>+ graphicsContext.drawImageBuffer(*m_layerImage, ColorSpaceDeviceRGB, destRect, tileRect);
</ins><span class="cx">
</span><span class="cx"> // Top left corner.
</span><span class="cx"> tileRect = FloatRect(0, 0, leftSlice, topSlice);
</span><span class="cx"> destRect = FloatRect(centerRect.x() - leftSlice, centerRect.y() - topSlice, leftSlice, topSlice);
</span><del>- graphicsContext.drawImageBuffer(m_layerImage, ColorSpaceDeviceRGB, destRect, tileRect);
</del><ins>+ graphicsContext.drawImageBuffer(*m_layerImage, ColorSpaceDeviceRGB, destRect, tileRect);
</ins><span class="cx">
</span><span class="cx"> // Top right corner.
</span><span class="cx"> tileRect = FloatRect(templateSize.width() - rightSlice, 0, rightSlice, topSlice);
</span><span class="cx"> destRect = FloatRect(centerRect.maxX(), centerRect.y() - topSlice, rightSlice, topSlice);
</span><del>- graphicsContext.drawImageBuffer(m_layerImage, ColorSpaceDeviceRGB, destRect, tileRect);
</del><ins>+ graphicsContext.drawImageBuffer(*m_layerImage, ColorSpaceDeviceRGB, destRect, tileRect);
</ins><span class="cx">
</span><span class="cx"> // Bottom right corner.
</span><span class="cx"> tileRect = FloatRect(templateSize.width() - rightSlice, templateSize.height() - bottomSlice, rightSlice, bottomSlice);
</span><span class="cx"> destRect = FloatRect(centerRect.maxX(), centerRect.maxY(), rightSlice, bottomSlice);
</span><del>- graphicsContext.drawImageBuffer(m_layerImage, ColorSpaceDeviceRGB, destRect, tileRect);
</del><ins>+ graphicsContext.drawImageBuffer(*m_layerImage, ColorSpaceDeviceRGB, destRect, tileRect);
</ins><span class="cx">
</span><span class="cx"> // Bottom left corner.
</span><span class="cx"> tileRect = FloatRect(0, templateSize.height() - bottomSlice, leftSlice, bottomSlice);
</span><span class="cx"> destRect = FloatRect(centerRect.x() - leftSlice, centerRect.maxY(), leftSlice, bottomSlice);
</span><del>- graphicsContext.drawImageBuffer(m_layerImage, ColorSpaceDeviceRGB, destRect, tileRect);
</del><ins>+ graphicsContext.drawImageBuffer(*m_layerImage, ColorSpaceDeviceRGB, destRect, tileRect);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx">
</span><span class="lines">@@ -915,9 +915,9 @@
</span><span class="cx"> GraphicsContextStateSaver stateSave(context);
</span><span class="cx">
</span><span class="cx"> context.clearShadow();
</span><del>- context.drawImageBuffer(m_layerImage, ColorSpaceDeviceRGB, FloatRect(roundedIntPoint(m_layerOrigin), m_layerSize), FloatRect(FloatPoint(), m_layerSize), context.compositeOperation());
</del><ins>+ context.drawImageBuffer(*m_layerImage, ColorSpaceDeviceRGB, FloatRect(roundedIntPoint(m_layerOrigin), m_layerSize), FloatRect(FloatPoint(), m_layerSize), context.compositeOperation());
</ins><span class="cx">
</span><del>- m_layerImage = 0;
</del><ins>+ m_layerImage = nullptr;
</ins><span class="cx"> ScratchBuffer::singleton().scheduleScratchBufferPurge();
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicscairoImageBufferCairocpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/cairo/ImageBufferCairo.cpp (191048 => 191049)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/cairo/ImageBufferCairo.cpp        2015-10-14 17:29:18 UTC (rev 191048)
+++ trunk/Source/WebCore/platform/graphics/cairo/ImageBufferCairo.cpp        2015-10-14 18:10:32 UTC (rev 191049)
</span><span class="lines">@@ -170,7 +170,7 @@
</span><span class="cx"> {
</span><span class="cx"> BackingStoreCopy copyMode = &destinationContext == &context() ? CopyBackingStore : DontCopyBackingStore;
</span><span class="cx"> RefPtr<Image> image = copyImage(copyMode);
</span><del>- destinationContext.drawImage(image.get(), styleColorSpace, destRect, srcRect, ImagePaintingOptions(op, blendMode, ImageOrientationDescription(), useLowQualityScale));
</del><ins>+ destinationContext.drawImage(*image, styleColorSpace, destRect, srcRect, ImagePaintingOptions(op, blendMode, ImageOrientationDescription(), useLowQualityScale));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void ImageBuffer::drawPattern(GraphicsContext& context, const FloatRect& srcRect, const AffineTransform& patternTransform,
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicscgPDFDocumentImagecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/cg/PDFDocumentImage.cpp (191048 => 191049)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/cg/PDFDocumentImage.cpp        2015-10-14 17:29:18 UTC (rev 191048)
+++ trunk/Source/WebCore/platform/graphics/cg/PDFDocumentImage.cpp        2015-10-14 18:10:32 UTC (rev 191049)
</span><span class="lines">@@ -190,7 +190,7 @@
</span><span class="cx"> context.setCompositeOperation(op);
</span><span class="cx">
</span><span class="cx"> if (m_cachedImageBuffer)
</span><del>- context.drawImageBuffer(m_cachedImageBuffer.get(), ColorSpaceDeviceRGB, dstRect);
</del><ins>+ context.drawImageBuffer(*m_cachedImageBuffer, ColorSpaceDeviceRGB, dstRect);
</ins><span class="cx"> else {
</span><span class="cx"> transformContextForPainting(context, dstRect, srcRect);
</span><span class="cx"> drawPDFPage(context);
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsfiltersFEBlendcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/filters/FEBlend.cpp (191048 => 191049)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/filters/FEBlend.cpp        2015-10-14 17:29:18 UTC (rev 191048)
+++ trunk/Source/WebCore/platform/graphics/filters/FEBlend.cpp        2015-10-14 18:10:32 UTC (rev 191049)
</span><span class="lines">@@ -72,11 +72,11 @@
</span><span class="cx">
</span><span class="cx"> ImageBuffer* imageBuffer = in->asImageBuffer();
</span><span class="cx"> ImageBuffer* imageBuffer2 = in2->asImageBuffer();
</span><del>- ASSERT(imageBuffer);
- ASSERT(imageBuffer2);
</del><ins>+ if (!imageBuffer || !imageBuffer2)
+ return;
</ins><span class="cx">
</span><del>- filterContext.drawImageBuffer(imageBuffer2, ColorSpaceDeviceRGB, drawingRegionOfInputImage(in2->absolutePaintRect()));
- filterContext.drawImageBuffer(imageBuffer, ColorSpaceDeviceRGB, drawingRegionOfInputImage(in->absolutePaintRect()), IntRect(IntPoint(), imageBuffer->logicalSize()), ImagePaintingOptions(CompositeSourceOver, m_mode));
</del><ins>+ filterContext.drawImageBuffer(*imageBuffer2, ColorSpaceDeviceRGB, drawingRegionOfInputImage(in2->absolutePaintRect()));
+ filterContext.drawImageBuffer(*imageBuffer, ColorSpaceDeviceRGB, drawingRegionOfInputImage(in->absolutePaintRect()), IntRect(IntPoint(), imageBuffer->logicalSize()), ImagePaintingOptions(CompositeSourceOver, m_mode));
</ins><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsfiltersFEColorMatrixcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/filters/FEColorMatrix.cpp (191048 => 191049)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/filters/FEColorMatrix.cpp        2015-10-14 17:29:18 UTC (rev 191048)
+++ trunk/Source/WebCore/platform/graphics/filters/FEColorMatrix.cpp        2015-10-14 18:10:32 UTC (rev 191049)
</span><span class="lines">@@ -147,7 +147,9 @@
</span><span class="cx"> if (!resultImage)
</span><span class="cx"> return;
</span><span class="cx">
</span><del>- resultImage->context().drawImageBuffer(in->asImageBuffer(), ColorSpaceDeviceRGB, drawingRegionOfInputImage(in->absolutePaintRect()));
</del><ins>+ ImageBuffer* inBuffer = in->asImageBuffer();
+ if (inBuffer)
+ resultImage->context().drawImageBuffer(*inBuffer, ColorSpaceDeviceRGB, drawingRegionOfInputImage(in->absolutePaintRect()));
</ins><span class="cx">
</span><span class="cx"> IntRect imageRect(IntPoint(), resultImage->logicalSize());
</span><span class="cx"> RefPtr<Uint8ClampedArray> pixelArray = resultImage->getUnmultipliedImageData(imageRect);
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsfiltersFECompositecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/filters/FEComposite.cpp (191048 => 191049)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/filters/FEComposite.cpp        2015-10-14 17:29:18 UTC (rev 191048)
+++ trunk/Source/WebCore/platform/graphics/filters/FEComposite.cpp        2015-10-14 18:10:32 UTC (rev 191049)
</span><span class="lines">@@ -276,13 +276,13 @@
</span><span class="cx">
</span><span class="cx"> ImageBuffer* imageBuffer = in->asImageBuffer();
</span><span class="cx"> ImageBuffer* imageBuffer2 = in2->asImageBuffer();
</span><del>- ASSERT(imageBuffer);
- ASSERT(imageBuffer2);
</del><ins>+ if (!imageBuffer || !imageBuffer2)
+ return;
</ins><span class="cx">
</span><span class="cx"> switch (m_type) {
</span><span class="cx"> case FECOMPOSITE_OPERATOR_OVER:
</span><del>- filterContext.drawImageBuffer(imageBuffer2, ColorSpaceDeviceRGB, drawingRegionOfInputImage(in2->absolutePaintRect()));
- filterContext.drawImageBuffer(imageBuffer, ColorSpaceDeviceRGB, drawingRegionOfInputImage(in->absolutePaintRect()));
</del><ins>+ filterContext.drawImageBuffer(*imageBuffer2, ColorSpaceDeviceRGB, drawingRegionOfInputImage(in2->absolutePaintRect()));
+ filterContext.drawImageBuffer(*imageBuffer, ColorSpaceDeviceRGB, drawingRegionOfInputImage(in->absolutePaintRect()));
</ins><span class="cx"> break;
</span><span class="cx"> case FECOMPOSITE_OPERATOR_IN: {
</span><span class="cx"> // Applies only to the intersected region.
</span><span class="lines">@@ -294,21 +294,21 @@
</span><span class="cx"> IntRect adjustedDestinationRect = destinationRect - absolutePaintRect().location();
</span><span class="cx"> IntRect sourceRect = destinationRect - in->absolutePaintRect().location();
</span><span class="cx"> IntRect source2Rect = destinationRect - in2->absolutePaintRect().location();
</span><del>- filterContext.drawImageBuffer(imageBuffer2, ColorSpaceDeviceRGB, adjustedDestinationRect, source2Rect);
- filterContext.drawImageBuffer(imageBuffer, ColorSpaceDeviceRGB, adjustedDestinationRect, sourceRect, CompositeSourceIn);
</del><ins>+ filterContext.drawImageBuffer(*imageBuffer2, ColorSpaceDeviceRGB, adjustedDestinationRect, source2Rect);
+ filterContext.drawImageBuffer(*imageBuffer, ColorSpaceDeviceRGB, adjustedDestinationRect, sourceRect, CompositeSourceIn);
</ins><span class="cx"> break;
</span><span class="cx"> }
</span><span class="cx"> case FECOMPOSITE_OPERATOR_OUT:
</span><del>- filterContext.drawImageBuffer(imageBuffer, ColorSpaceDeviceRGB, drawingRegionOfInputImage(in->absolutePaintRect()));
- filterContext.drawImageBuffer(imageBuffer2, ColorSpaceDeviceRGB, drawingRegionOfInputImage(in2->absolutePaintRect()), IntRect(IntPoint(), imageBuffer2->logicalSize()), CompositeDestinationOut);
</del><ins>+ filterContext.drawImageBuffer(*imageBuffer, ColorSpaceDeviceRGB, drawingRegionOfInputImage(in->absolutePaintRect()));
+ filterContext.drawImageBuffer(*imageBuffer2, ColorSpaceDeviceRGB, drawingRegionOfInputImage(in2->absolutePaintRect()), IntRect(IntPoint(), imageBuffer2->logicalSize()), CompositeDestinationOut);
</ins><span class="cx"> break;
</span><span class="cx"> case FECOMPOSITE_OPERATOR_ATOP:
</span><del>- filterContext.drawImageBuffer(imageBuffer2, ColorSpaceDeviceRGB, drawingRegionOfInputImage(in2->absolutePaintRect()));
- filterContext.drawImageBuffer(imageBuffer, ColorSpaceDeviceRGB, drawingRegionOfInputImage(in->absolutePaintRect()), IntRect(IntPoint(), imageBuffer->logicalSize()), CompositeSourceAtop);
</del><ins>+ filterContext.drawImageBuffer(*imageBuffer2, ColorSpaceDeviceRGB, drawingRegionOfInputImage(in2->absolutePaintRect()));
+ filterContext.drawImageBuffer(*imageBuffer, ColorSpaceDeviceRGB, drawingRegionOfInputImage(in->absolutePaintRect()), IntRect(IntPoint(), imageBuffer->logicalSize()), CompositeSourceAtop);
</ins><span class="cx"> break;
</span><span class="cx"> case FECOMPOSITE_OPERATOR_XOR:
</span><del>- filterContext.drawImageBuffer(imageBuffer2, ColorSpaceDeviceRGB, drawingRegionOfInputImage(in2->absolutePaintRect()));
- filterContext.drawImageBuffer(imageBuffer, ColorSpaceDeviceRGB, drawingRegionOfInputImage(in->absolutePaintRect()), IntRect(IntPoint(), imageBuffer->logicalSize()), CompositeXOR);
</del><ins>+ filterContext.drawImageBuffer(*imageBuffer2, ColorSpaceDeviceRGB, drawingRegionOfInputImage(in2->absolutePaintRect()));
+ filterContext.drawImageBuffer(*imageBuffer, ColorSpaceDeviceRGB, drawingRegionOfInputImage(in->absolutePaintRect()), IntRect(IntPoint(), imageBuffer->logicalSize()), CompositeXOR);
</ins><span class="cx"> break;
</span><span class="cx"> default:
</span><span class="cx"> break;
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsfiltersFEDropShadowcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/filters/FEDropShadow.cpp (191048 => 191049)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/filters/FEDropShadow.cpp        2015-10-14 17:29:18 UTC (rev 191048)
+++ trunk/Source/WebCore/platform/graphics/filters/FEDropShadow.cpp        2015-10-14 18:10:32 UTC (rev 191049)
</span><span class="lines">@@ -88,10 +88,12 @@
</span><span class="cx"> drawingRegionWithOffset.move(offset);
</span><span class="cx">
</span><span class="cx"> ImageBuffer* sourceImage = in->asImageBuffer();
</span><del>- ASSERT(sourceImage);
</del><ins>+ if (!sourceImage)
+ return;
+
</ins><span class="cx"> GraphicsContext& resultContext = resultImage->context();
</span><span class="cx"> resultContext.setAlpha(m_shadowOpacity);
</span><del>- resultContext.drawImageBuffer(sourceImage, ColorSpaceDeviceRGB, drawingRegionWithOffset);
</del><ins>+ resultContext.drawImageBuffer(*sourceImage, ColorSpaceDeviceRGB, drawingRegionWithOffset);
</ins><span class="cx"> resultContext.setAlpha(1);
</span><span class="cx">
</span><span class="cx"> ShadowBlur contextShadow(blurRadius, offset, m_shadowColor, ColorSpaceDeviceRGB);
</span><span class="lines">@@ -108,7 +110,7 @@
</span><span class="cx"> resultContext.fillRect(FloatRect(FloatPoint(), absolutePaintRect().size()), m_shadowColor, ColorSpaceDeviceRGB);
</span><span class="cx"> resultContext.setCompositeOperation(CompositeDestinationOver);
</span><span class="cx">
</span><del>- resultImage->context().drawImageBuffer(sourceImage, ColorSpaceDeviceRGB, drawingRegion);
</del><ins>+ resultImage->context().drawImageBuffer(*sourceImage, ColorSpaceDeviceRGB, drawingRegion);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void FEDropShadow::dump()
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsfiltersFEMergecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/filters/FEMerge.cpp (191048 => 191049)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/filters/FEMerge.cpp        2015-10-14 17:29:18 UTC (rev 191048)
+++ trunk/Source/WebCore/platform/graphics/filters/FEMerge.cpp        2015-10-14 18:10:32 UTC (rev 191049)
</span><span class="lines">@@ -47,10 +47,12 @@
</span><span class="cx"> if (!resultImage)
</span><span class="cx"> return;
</span><span class="cx">
</span><ins>+
</ins><span class="cx"> GraphicsContext& filterContext = resultImage->context();
</span><span class="cx"> for (unsigned i = 0; i < size; ++i) {
</span><span class="cx"> FilterEffect* in = inputEffect(i);
</span><del>- filterContext.drawImageBuffer(in->asImageBuffer(), ColorSpaceDeviceRGB, drawingRegionOfInputImage(in->absolutePaintRect()));
</del><ins>+ if (ImageBuffer* inBuffer = in->asImageBuffer())
+ filterContext.drawImageBuffer(*inBuffer, ColorSpaceDeviceRGB, drawingRegionOfInputImage(in->absolutePaintRect()));
</ins><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsfiltersFEOffsetcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/filters/FEOffset.cpp (191048 => 191049)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/filters/FEOffset.cpp        2015-10-14 17:29:18 UTC (rev 191048)
+++ trunk/Source/WebCore/platform/graphics/filters/FEOffset.cpp        2015-10-14 18:10:32 UTC (rev 191049)
</span><span class="lines">@@ -79,7 +79,8 @@
</span><span class="cx"> FilterEffect* in = inputEffect(0);
</span><span class="cx">
</span><span class="cx"> ImageBuffer* resultImage = createImageBufferResult();
</span><del>- if (!resultImage)
</del><ins>+ ImageBuffer* inBuffer = in->asImageBuffer();
+ if (!resultImage || !inBuffer)
</ins><span class="cx"> return;
</span><span class="cx">
</span><span class="cx"> setIsAlphaImage(in->isAlphaImage());
</span><span class="lines">@@ -87,7 +88,7 @@
</span><span class="cx"> FloatRect drawingRegion = drawingRegionOfInputImage(in->absolutePaintRect());
</span><span class="cx"> Filter& filter = this->filter();
</span><span class="cx"> drawingRegion.move(filter.applyHorizontalScale(m_dx), filter.applyVerticalScale(m_dy));
</span><del>- resultImage->context().drawImageBuffer(in->asImageBuffer(), ColorSpaceDeviceRGB, drawingRegion);
</del><ins>+ resultImage->context().drawImageBuffer(*inBuffer, ColorSpaceDeviceRGB, drawingRegion);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void FEOffset::dump()
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsfiltersFETilecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/filters/FETile.cpp (191048 => 191049)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/filters/FETile.cpp        2015-10-14 17:29:18 UTC (rev 191048)
+++ trunk/Source/WebCore/platform/graphics/filters/FETile.cpp        2015-10-14 18:10:32 UTC (rev 191049)
</span><span class="lines">@@ -47,7 +47,8 @@
</span><span class="cx"> FilterEffect* in = inputEffect(0);
</span><span class="cx">
</span><span class="cx"> ImageBuffer* resultImage = createImageBufferResult();
</span><del>- if (!resultImage)
</del><ins>+ ImageBuffer* inBuffer = in->asImageBuffer();
+ if (!resultImage || !inBuffer)
</ins><span class="cx"> return;
</span><span class="cx">
</span><span class="cx"> setIsAlphaImage(in->isAlphaImage());
</span><span class="lines">@@ -69,7 +70,7 @@
</span><span class="cx">
</span><span class="cx"> GraphicsContext& tileImageContext = tileImage->context();
</span><span class="cx"> tileImageContext.translate(-inMaxEffectLocation.x(), -inMaxEffectLocation.y());
</span><del>- tileImageContext.drawImageBuffer(in->asImageBuffer(), ColorSpaceDeviceRGB, in->absolutePaintRect().location());
</del><ins>+ tileImageContext.drawImageBuffer(*inBuffer, ColorSpaceDeviceRGB, in->absolutePaintRect().location());
</ins><span class="cx">
</span><span class="cx"> auto tileImageCopy = tileImage->copyImage(CopyBackingStore);
</span><span class="cx"> if (!tileImageCopy)
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsfiltersSourceAlphacpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/filters/SourceAlpha.cpp (191048 => 191049)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/filters/SourceAlpha.cpp        2015-10-14 17:29:18 UTC (rev 191048)
+++ trunk/Source/WebCore/platform/graphics/filters/SourceAlpha.cpp        2015-10-14 18:10:32 UTC (rev 191049)
</span><span class="lines">@@ -54,11 +54,12 @@
</span><span class="cx"> GraphicsContext& filterContext = resultImage->context();
</span><span class="cx">
</span><span class="cx"> ImageBuffer* imageBuffer = inputEffect(0)->asImageBuffer();
</span><del>- ASSERT(imageBuffer);
</del><ins>+ if (!imageBuffer)
+ return;
</ins><span class="cx">
</span><span class="cx"> FloatRect imageRect(FloatPoint(), absolutePaintRect().size());
</span><span class="cx"> filterContext.fillRect(imageRect, Color::black, ColorSpaceDeviceRGB);
</span><del>- filterContext.drawImageBuffer(imageBuffer, ColorSpaceDeviceRGB, IntPoint(), CompositeDestinationIn);
</del><ins>+ filterContext.drawImageBuffer(*imageBuffer, ColorSpaceDeviceRGB, IntPoint(), CompositeDestinationIn);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void SourceAlpha::dump()
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsfiltersSourceGraphiccpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/filters/SourceGraphic.cpp (191048 => 191049)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/filters/SourceGraphic.cpp        2015-10-14 17:29:18 UTC (rev 191048)
+++ trunk/Source/WebCore/platform/graphics/filters/SourceGraphic.cpp        2015-10-14 18:10:32 UTC (rev 191049)
</span><span class="lines">@@ -49,12 +49,14 @@
</span><span class="cx">
</span><span class="cx"> void SourceGraphic::platformApplySoftware()
</span><span class="cx"> {
</span><ins>+ Filter& filter = this->filter();
+
</ins><span class="cx"> ImageBuffer* resultImage = createImageBufferResult();
</span><del>- Filter& filter = this->filter();
- if (!resultImage || !filter.sourceImage())
</del><ins>+ ImageBuffer* sourceImage = filter.sourceImage();
+ if (!resultImage || !sourceImage)
</ins><span class="cx"> return;
</span><span class="cx">
</span><del>- resultImage->context().drawImageBuffer(filter.sourceImage(), ColorSpaceDeviceRGB, IntPoint());
</del><ins>+ resultImage->context().drawImageBuffer(*sourceImage, ColorSpaceDeviceRGB, IntPoint());
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void SourceGraphic::dump()
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsgstreamerMediaPlayerPrivateGStreamerBasecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp (191048 => 191049)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp        2015-10-14 17:29:18 UTC (rev 191048)
+++ trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp        2015-10-14 18:10:32 UTC (rev 191049)
</span><span class="lines">@@ -525,8 +525,8 @@
</span><span class="cx"> if (!gstImage)
</span><span class="cx"> return;
</span><span class="cx">
</span><del>- context.drawImage(reinterpret_cast<Image*>(gstImage->image().get()), ColorSpaceSRGB,
- rect, gstImage->rect(), CompositeCopy);
</del><ins>+ if (Image* image = reinterpret_cast<Image*>(gstImage->image().get()))
+ context.drawImage(*image, ColorSpaceSRGB, rect, gstImage->rect(), CompositeCopy);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> #if USE(TEXTURE_MAPPER_GL) && !USE(COORDINATED_GRAPHICS)
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicstexmapcoordinatedCoordinatedImageBackingcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedImageBacking.cpp (191048 => 191049)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedImageBacking.cpp        2015-10-14 17:29:18 UTC (rev 191048)
+++ trunk/Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedImageBacking.cpp        2015-10-14 18:10:32 UTC (rev 191049)
</span><span class="lines">@@ -35,7 +35,7 @@
</span><span class="cx">
</span><span class="cx"> class ImageBackingSurfaceClient : public CoordinatedSurface::Client {
</span><span class="cx"> public:
</span><del>- ImageBackingSurfaceClient(Image* image, const IntRect& rect)
</del><ins>+ ImageBackingSurfaceClient(Image& image, const IntRect& rect)
</ins><span class="cx"> : m_image(image)
</span><span class="cx"> , m_rect(rect)
</span><span class="cx"> {
</span><span class="lines">@@ -47,7 +47,7 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> private:
</span><del>- Image* m_image;
</del><ins>+ Image& m_image;
</ins><span class="cx"> IntRect m_rect;
</span><span class="cx"> };
</span><span class="cx">
</span><span class="lines">@@ -128,7 +128,7 @@
</span><span class="cx">
</span><span class="cx"> IntRect rect(IntPoint::zero(), IntSize(m_image->size()));
</span><span class="cx">
</span><del>- ImageBackingSurfaceClient surfaceClient(m_image.get(), rect);
</del><ins>+ ImageBackingSurfaceClient surfaceClient(*m_image, rect);
</ins><span class="cx"> m_surface->paintToSurface(rect, &surfaceClient);
</span><span class="cx">
</span><span class="cx"> m_nativeImagePtr = m_image->nativeImageForCurrentFrame();
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmacThemeMacmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mac/ThemeMac.mm (191048 => 191049)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mac/ThemeMac.mm        2015-10-14 17:29:18 UTC (rev 191048)
+++ trunk/Source/WebCore/platform/mac/ThemeMac.mm        2015-10-14 18:10:32 UTC (rev 191049)
</span><span class="lines">@@ -686,11 +686,13 @@
</span><span class="cx"> if (useImageBuffer) {
</span><span class="cx"> NSRect imageBufferDrawRect = NSRect(FloatRect(buttonFocusRectOutlineWidth, buttonFocusRectOutlineWidth, rect.width(), rect.height()));
</span><span class="cx"> auto imageBuffer = ImageBuffer::createCompatibleBuffer(rect.size() + 2 * FloatSize(buttonFocusRectOutlineWidth, buttonFocusRectOutlineWidth), deviceScaleFactor, ColorSpaceSRGB, context, false);
</span><ins>+ if (!imageBuffer)
+ return needsRepaint;
</ins><span class="cx"> {
</span><span class="cx"> LocalCurrentGraphicsContext localContext(imageBuffer->context());
</span><span class="cx"> needsRepaint = drawCellOrFocusRingIntoRectWithView(cell, imageBufferDrawRect, view, drawButtonCell, drawFocusRing);
</span><span class="cx"> }
</span><del>- context.drawImageBuffer(imageBuffer.get(), ColorSpaceSRGB, rect.location() - FloatSize(buttonFocusRectOutlineWidth, buttonFocusRectOutlineWidth));
</del><ins>+ context.drawImageBuffer(*imageBuffer, ColorSpaceSRGB, rect.location() - FloatSize(buttonFocusRectOutlineWidth, buttonFocusRectOutlineWidth));
</ins><span class="cx"> return needsRepaint;
</span><span class="cx"> }
</span><span class="cx"> if (drawButtonCell)
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingFilterEffectRenderercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/FilterEffectRenderer.cpp (191048 => 191049)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/FilterEffectRenderer.cpp        2015-10-14 17:29:18 UTC (rev 191048)
+++ trunk/Source/WebCore/rendering/FilterEffectRenderer.cpp        2015-10-14 18:10:32 UTC (rev 191049)
</span><span class="lines">@@ -429,8 +429,10 @@
</span><span class="cx"> LayoutRect destRect = filter->outputRect();
</span><span class="cx"> destRect.move(m_paintOffset.x(), m_paintOffset.y());
</span><span class="cx">
</span><del>- destinationContext.drawImageBuffer(filter->output(), m_renderLayer->renderer().style().colorSpace(),
- snapRectToDevicePixels(destRect, m_renderLayer->renderer().document().deviceScaleFactor()));
</del><ins>+ if (ImageBuffer* outputBuffer = filter->output()) {
+ destinationContext.drawImageBuffer(*outputBuffer, m_renderLayer->renderer().style().colorSpace(),
+ snapRectToDevicePixels(destRect, m_renderLayer->renderer().document().deviceScaleFactor()));
+ }
</ins><span class="cx">
</span><span class="cx"> filter->clearIntermediateResults();
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingImageQualityControllercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/ImageQualityController.cpp (191048 => 191049)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/ImageQualityController.cpp        2015-10-14 17:29:18 UTC (rev 191048)
+++ trunk/Source/WebCore/rendering/ImageQualityController.cpp        2015-10-14 18:10:32 UTC (rev 191049)
</span><span class="lines">@@ -99,11 +99,11 @@
</span><span class="cx"> m_timer.startOneShot(cLowQualityTimeThreshold);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-bool ImageQualityController::shouldPaintAtLowQuality(GraphicsContext& context, RenderBoxModelObject* object, Image* image, const void *layer, const LayoutSize& size)
</del><ins>+bool ImageQualityController::shouldPaintAtLowQuality(GraphicsContext& context, RenderBoxModelObject* object, Image& image, const void *layer, const LayoutSize& size)
</ins><span class="cx"> {
</span><span class="cx"> // If the image is not a bitmap image, then none of this is relevant and we just paint at high
</span><span class="cx"> // quality.
</span><del>- if (!image || !(image->isBitmapImage() || image->isPDFDocumentImage()) || context.paintingDisabled())
</del><ins>+ if (!(image.isBitmapImage() || image.isPDFDocumentImage()) || context.paintingDisabled())
</ins><span class="cx"> return false;
</span><span class="cx">
</span><span class="cx"> switch (object->style().imageRendering()) {
</span><span class="lines">@@ -118,7 +118,7 @@
</span><span class="cx">
</span><span class="cx"> // Make sure to use the unzoomed image size, since if a full page zoom is in effect, the image
</span><span class="cx"> // is actually being scaled.
</span><del>- IntSize imageSize(image->width(), image->height());
</del><ins>+ IntSize imageSize(image.width(), image.height());
</ins><span class="cx">
</span><span class="cx"> // Look ourselves up in the hashtables.
</span><span class="cx"> auto i = m_objectLayerSizeMap.find(object);
</span><span class="lines">@@ -156,7 +156,7 @@
</span><span class="cx">
</span><span class="cx"> // There is no need to hash scaled images that always use low quality mode when the page demands it. This is the iChat case.
</span><span class="cx"> if (m_renderView.frame().page()->inLowQualityImageInterpolationMode()) {
</span><del>- double totalPixels = static_cast<double>(image->width()) * static_cast<double>(image->height());
</del><ins>+ double totalPixels = static_cast<double>(image.width()) * static_cast<double>(image.height());
</ins><span class="cx"> if (totalPixels > cInterpolationCutoff)
</span><span class="cx"> return true;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingImageQualityControllerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/ImageQualityController.h (191048 => 191049)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/ImageQualityController.h        2015-10-14 17:29:18 UTC (rev 191048)
+++ trunk/Source/WebCore/rendering/ImageQualityController.h        2015-10-14 18:10:32 UTC (rev 191049)
</span><span class="lines">@@ -43,7 +43,7 @@
</span><span class="cx"> public:
</span><span class="cx"> explicit ImageQualityController(const RenderView&);
</span><span class="cx">
</span><del>- bool shouldPaintAtLowQuality(GraphicsContext&, RenderBoxModelObject*, Image*, const void* layer, const LayoutSize&);
</del><ins>+ bool shouldPaintAtLowQuality(GraphicsContext&, RenderBoxModelObject*, Image&, const void* layer, const LayoutSize&);
</ins><span class="cx"> void rendererWillBeDestroyed(RenderBoxModelObject& renderer) { removeObject(&renderer); }
</span><span class="cx">
</span><span class="cx"> private:
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderBoxModelObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderBoxModelObject.cpp (191048 => 191049)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderBoxModelObject.cpp        2015-10-14 17:29:18 UTC (rev 191048)
+++ trunk/Source/WebCore/rendering/RenderBoxModelObject.cpp        2015-10-14 18:10:32 UTC (rev 191049)
</span><span class="lines">@@ -161,7 +161,7 @@
</span><span class="cx"> layer()->backing()->suspendAnimations(time);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-bool RenderBoxModelObject::shouldPaintAtLowQuality(GraphicsContext& context, Image* image, const void* layer, const LayoutSize& size)
</del><ins>+bool RenderBoxModelObject::shouldPaintAtLowQuality(GraphicsContext& context, Image& image, const void* layer, const LayoutSize& size)
</ins><span class="cx"> {
</span><span class="cx"> return view().imageQualityController().shouldPaintAtLowQuality(context, this, image, layer, size);
</span><span class="cx"> }
</span><span class="lines">@@ -830,18 +830,17 @@
</span><span class="cx"> if (!baseBgColorOnly && shouldPaintBackgroundImage) {
</span><span class="cx"> BackgroundImageGeometry geometry = calculateBackgroundImageGeometry(paintInfo.paintContainer, *bgLayer, rect.location(), scrolledPaintRect, backgroundObject);
</span><span class="cx"> geometry.clip(LayoutRect(pixelSnappedRect));
</span><del>- if (!geometry.destRect().isEmpty()) {
</del><ins>+ RefPtr<Image> image;
+ if (!geometry.destRect().isEmpty() && (image = bgImage->image(backgroundObject ? backgroundObject : this, geometry.tileSize()))) {
</ins><span class="cx"> CompositeOperator compositeOp = op == CompositeSourceOver ? bgLayer->composite() : op;
</span><del>- auto clientForBackgroundImage = backgroundObject ? backgroundObject : this;
- RefPtr<Image> image = bgImage->image(clientForBackgroundImage, geometry.tileSize());
</del><span class="cx"> context.setDrawLuminanceMask(bgLayer->maskSourceType() == MaskLuminance);
</span><del>- bool useLowQualityScaling = shouldPaintAtLowQuality(context, image.get(), bgLayer, geometry.tileSize());
- context.drawTiledImage(image.get(), style().colorSpace(), geometry.destRect(), toLayoutPoint(geometry.relativePhase()), geometry.tileSize(), geometry.spaceSize(), ImagePaintingOptions(compositeOp, bgLayer->blendMode(), ImageOrientationDescription(), useLowQualityScaling));
</del><ins>+ bool useLowQualityScaling = shouldPaintAtLowQuality(context, *image, bgLayer, geometry.tileSize());
+ context.drawTiledImage(*image, style().colorSpace(), geometry.destRect(), toLayoutPoint(geometry.relativePhase()), geometry.tileSize(), geometry.spaceSize(), ImagePaintingOptions(compositeOp, bgLayer->blendMode(), ImageOrientationDescription(), useLowQualityScaling));
</ins><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><del>- if (bgLayer->clip() == TextFillBox) {
- context.drawImageBuffer(maskImage.get(), ColorSpaceDeviceRGB, maskRect, CompositeDestinationIn);
</del><ins>+ if (maskImage && bgLayer->clip() == TextFillBox) {
+ context.drawImageBuffer(*maskImage, ColorSpaceDeviceRGB, maskRect, CompositeDestinationIn);
</ins><span class="cx"> context.endTransparencyLayer();
</span><span class="cx"> }
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderBoxModelObjecth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderBoxModelObject.h (191048 => 191049)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderBoxModelObject.h        2015-10-14 17:29:18 UTC (rev 191048)
+++ trunk/Source/WebCore/rendering/RenderBoxModelObject.h        2015-10-14 18:10:32 UTC (rev 191049)
</span><span class="lines">@@ -251,7 +251,7 @@
</span><span class="cx"> RoundedRect backgroundRoundedRectAdjustedForBleedAvoidance(const GraphicsContext&, const LayoutRect&, BackgroundBleedAvoidance, InlineFlowBox*, const LayoutSize&, bool includeLogicalLeftEdge, bool includeLogicalRightEdge) const;
</span><span class="cx"> LayoutRect borderInnerRectAdjustedForBleedAvoidance(const GraphicsContext&, const LayoutRect&, BackgroundBleedAvoidance) const;
</span><span class="cx">
</span><del>- bool shouldPaintAtLowQuality(GraphicsContext&, Image*, const void*, const LayoutSize&);
</del><ins>+ bool shouldPaintAtLowQuality(GraphicsContext&, Image&, const void*, const LayoutSize&);
</ins><span class="cx">
</span><span class="cx"> RenderBoxModelObject* continuation() const;
</span><span class="cx"> void setContinuation(RenderBoxModelObject*);
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderEmbeddedObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderEmbeddedObject.cpp (191048 => 191049)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderEmbeddedObject.cpp        2015-10-14 17:29:18 UTC (rev 191048)
+++ trunk/Source/WebCore/rendering/RenderEmbeddedObject.cpp        2015-10-14 18:10:32 UTC (rev 191049)
</span><span class="lines">@@ -197,7 +197,7 @@
</span><span class="cx"> repaint();
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void RenderEmbeddedObject::paintSnapshotImage(PaintInfo& paintInfo, const LayoutPoint& paintOffset, Image* image)
</del><ins>+void RenderEmbeddedObject::paintSnapshotImage(PaintInfo& paintInfo, const LayoutPoint& paintOffset, Image& image)
</ins><span class="cx"> {
</span><span class="cx"> LayoutUnit cWidth = contentWidth();
</span><span class="cx"> LayoutUnit cHeight = contentHeight();
</span><span class="lines">@@ -214,7 +214,7 @@
</span><span class="cx"> if (alignedRect.width() <= 0 || alignedRect.height() <= 0)
</span><span class="cx"> return;
</span><span class="cx">
</span><del>- bool useLowQualityScaling = shouldPaintAtLowQuality(context, image, image, alignedRect.size());
</del><ins>+ bool useLowQualityScaling = shouldPaintAtLowQuality(context, image, &image, alignedRect.size());
</ins><span class="cx"> ImageOrientationDescription orientationDescription(shouldRespectImageOrientation());
</span><span class="cx"> #if ENABLE(CSS_IMAGE_ORIENTATION)
</span><span class="cx"> orientationDescription.setImageOrientationEnum(style().imageOrientation());
</span><span class="lines">@@ -239,7 +239,7 @@
</span><span class="cx"> return;
</span><span class="cx">
</span><span class="cx"> if (Image* snapshot = downcast<HTMLPlugInImageElement>(plugInElement).snapshotImage())
</span><del>- paintSnapshotImage(paintInfo, paintOffset, snapshot);
</del><ins>+ paintSnapshotImage(paintInfo, paintOffset, *snapshot);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void RenderEmbeddedObject::paint(PaintInfo& paintInfo, const LayoutPoint& paintOffset)
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderEmbeddedObjecth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderEmbeddedObject.h (191048 => 191049)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderEmbeddedObject.h        2015-10-14 17:29:18 UTC (rev 191048)
+++ trunk/Source/WebCore/rendering/RenderEmbeddedObject.h        2015-10-14 18:10:32 UTC (rev 191049)
</span><span class="lines">@@ -73,7 +73,7 @@
</span><span class="cx"> virtual const char* renderName() const override { return "RenderEmbeddedObject"; }
</span><span class="cx"> virtual bool isEmbeddedObject() const override final { return true; }
</span><span class="cx">
</span><del>- void paintSnapshotImage(PaintInfo&, const LayoutPoint&, Image*);
</del><ins>+ void paintSnapshotImage(PaintInfo&, const LayoutPoint&, Image&);
</ins><span class="cx"> virtual void paintContents(PaintInfo&, const LayoutPoint&) override final;
</span><span class="cx">
</span><span class="cx"> virtual bool requiresLayer() const override final;
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderImagecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderImage.cpp (191048 => 191049)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderImage.cpp        2015-10-14 17:29:18 UTC (rev 191048)
+++ trunk/Source/WebCore/rendering/RenderImage.cpp        2015-10-14 18:10:32 UTC (rev 191049)
</span><span class="lines">@@ -424,7 +424,7 @@
</span><span class="cx"> #if ENABLE(CSS_IMAGE_ORIENTATION)
</span><span class="cx"> orientationDescription.setImageOrientationEnum(style().imageOrientation());
</span><span class="cx"> #endif
</span><del>- context.drawImage(image.get(), style().colorSpace(), snapRectToDevicePixels(LayoutRect(paintOffset + imageOffset, imageSize), deviceScaleFactor), orientationDescription);
</del><ins>+ context.drawImage(*image, style().colorSpace(), snapRectToDevicePixels(LayoutRect(paintOffset + imageOffset, imageSize), deviceScaleFactor), orientationDescription);
</ins><span class="cx"> errorPictureDrawn = true;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -548,12 +548,12 @@
</span><span class="cx"> HTMLImageElement* imageElement = is<HTMLImageElement>(element()) ? downcast<HTMLImageElement>(element()) : nullptr;
</span><span class="cx"> CompositeOperator compositeOperator = imageElement ? imageElement->compositeOperator() : CompositeSourceOver;
</span><span class="cx"> Image* image = imageResource().image().get();
</span><del>- bool useLowQualityScaling = shouldPaintAtLowQuality(context, image, image, LayoutSize(rect.size()));
</del><ins>+ bool useLowQualityScaling = image && shouldPaintAtLowQuality(context, *image, image, LayoutSize(rect.size()));
</ins><span class="cx"> ImageOrientationDescription orientationDescription(shouldRespectImageOrientation());
</span><span class="cx"> #if ENABLE(CSS_IMAGE_ORIENTATION)
</span><span class="cx"> orientationDescription.setImageOrientationEnum(style().imageOrientation());
</span><span class="cx"> #endif
</span><del>- context.drawImage(imageResource().image(rect.width(), rect.height()).get(), style().colorSpace(), rect,
</del><ins>+ context.drawImage(*img, style().colorSpace(), rect,
</ins><span class="cx"> ImagePaintingOptions(compositeOperator, BlendModeNormal, orientationDescription, useLowQualityScaling));
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderImageResourceStyleImagecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderImageResourceStyleImage.cpp (191048 => 191049)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderImageResourceStyleImage.cpp        2015-10-14 17:29:18 UTC (rev 191048)
+++ trunk/Source/WebCore/rendering/RenderImageResourceStyleImage.cpp        2015-10-14 18:10:32 UTC (rev 191049)
</span><span class="lines">@@ -57,14 +57,14 @@
</span><span class="cx"> {
</span><span class="cx"> ASSERT(m_renderer);
</span><span class="cx"> m_styleImage->removeClient(m_renderer);
</span><del>- m_cachedImage = 0;
</del><ins>+ m_cachedImage = nullptr;
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> PassRefPtr<Image> RenderImageResourceStyleImage::image(int width, int height) const
</span><span class="cx"> {
</span><span class="cx"> // Generated content may trigger calls to image() while we're still pending, don't assert but gracefully exit.
</span><span class="cx"> if (m_styleImage->isPendingImage())
</span><del>- return 0;
</del><ins>+ return nullptr;
</ins><span class="cx"> return m_styleImage->image(m_renderer, IntSize(width, height));
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderLayercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderLayer.cpp (191048 => 191049)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderLayer.cpp        2015-10-14 17:29:18 UTC (rev 191048)
+++ trunk/Source/WebCore/rendering/RenderLayer.cpp        2015-10-14 18:10:32 UTC (rev 191049)
</span><span class="lines">@@ -3655,12 +3655,16 @@
</span><span class="cx"> context.save();
</span><span class="cx"> context.translate(resizerCornerRect.x() + cornerResizerSize.width(), resizerCornerRect.y() + resizerCornerRect.height() - cornerResizerSize.height());
</span><span class="cx"> context.scale(FloatSize(-1.0, 1.0));
</span><del>- context.drawImage(resizeCornerImage.get(), renderer().style().colorSpace(), FloatRect(FloatPoint(), cornerResizerSize));
</del><ins>+ if (resizeCornerImage)
+ context.drawImage(*resizeCornerImage, renderer().style().colorSpace(), FloatRect(FloatPoint(), cornerResizerSize));
</ins><span class="cx"> context.restore();
</span><span class="cx"> return;
</span><span class="cx"> }
</span><ins>+
+ if (!resizeCornerImage)
+ return;
</ins><span class="cx"> FloatRect imageRect = snapRectToDevicePixels(LayoutRect(resizerCornerRect.maxXMaxYCorner() - cornerResizerSize, cornerResizerSize), renderer().document().deviceScaleFactor());
</span><del>- context.drawImage(resizeCornerImage.get(), renderer().style().colorSpace(), imageRect);
</del><ins>+ context.drawImage(*resizeCornerImage, renderer().style().colorSpace(), imageRect);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void RenderLayer::paintResizer(GraphicsContext& context, const LayoutPoint& paintOffset, const LayoutRect& damageRect)
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderListMarkercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderListMarker.cpp (191048 => 191049)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderListMarker.cpp        2015-10-14 17:29:18 UTC (rev 191048)
+++ trunk/Source/WebCore/rendering/RenderListMarker.cpp        2015-10-14 18:10:32 UTC (rev 191049)
</span><span class="lines">@@ -1197,7 +1197,8 @@
</span><span class="cx"> GraphicsContext& context = paintInfo.context();
</span><span class="cx">
</span><span class="cx"> if (isImage()) {
</span><del>- context.drawImage(m_image->image(this, marker.size()).get(), style().colorSpace(), marker);
</del><ins>+ if (RefPtr<Image> markerImage = m_image->image(this, marker.size()))
+ context.drawImage(*markerImage, style().colorSpace(), marker);
</ins><span class="cx"> if (selectionState() != SelectionNone) {
</span><span class="cx"> LayoutRect selRect = localSelectionRect();
</span><span class="cx"> selRect.moveBy(boxOrigin);
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderSnapshottedPlugIncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderSnapshottedPlugIn.cpp (191048 => 191049)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderSnapshottedPlugIn.cpp        2015-10-14 17:29:18 UTC (rev 191048)
+++ trunk/Source/WebCore/rendering/RenderSnapshottedPlugIn.cpp        2015-10-14 18:10:32 UTC (rev 191049)
</span><span class="lines">@@ -135,13 +135,13 @@
</span><span class="cx"> if (alignedRect.width() <= 0 || alignedRect.height() <= 0)
</span><span class="cx"> return;
</span><span class="cx">
</span><del>- bool useLowQualityScaling = shouldPaintAtLowQuality(context, image, image, alignedRect.size());
</del><ins>+ bool useLowQualityScaling = shouldPaintAtLowQuality(context, *image, image, alignedRect.size());
</ins><span class="cx">
</span><span class="cx"> ImageOrientationDescription orientationDescription(shouldRespectImageOrientation());
</span><span class="cx"> #if ENABLE(CSS_IMAGE_ORIENTATION)
</span><span class="cx"> orientationDescription.setImageOrientationEnum(style().imageOrientation());
</span><span class="cx"> #endif
</span><del>- context.drawImage(image, style().colorSpace(), alignedRect, ImagePaintingOptions(orientationDescription, useLowQualityScaling));
</del><ins>+ context.drawImage(*image, style().colorSpace(), alignedRect, ImagePaintingOptions(orientationDescription, useLowQualityScaling));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> CursorDirective RenderSnapshottedPlugIn::getCursor(const LayoutPoint& point, Cursor& overrideCursor) const
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderThemeMacmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderThemeMac.mm (191048 => 191049)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderThemeMac.mm        2015-10-14 17:29:18 UTC (rev 191048)
+++ trunk/Source/WebCore/rendering/RenderThemeMac.mm        2015-10-14 18:10:32 UTC (rev 191049)
</span><span class="lines">@@ -1158,7 +1158,7 @@
</span><span class="cx"> paintInfo.context().scale(FloatSize(-1, 1));
</span><span class="cx"> }
</span><span class="cx">
</span><del>- paintInfo.context().drawImageBuffer(imageBuffer.get(), ColorSpaceDeviceRGB, inflatedRect.location());
</del><ins>+ paintInfo.context().drawImageBuffer(*imageBuffer, ColorSpaceDeviceRGB, inflatedRect.location());
</ins><span class="cx"> return false;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -1912,7 +1912,7 @@
</span><span class="cx"> if (alignedPluginRect.width() <= 0 || alignedPluginRect.height() <= 0)
</span><span class="cx"> return true;
</span><span class="cx">
</span><del>- context.drawImage(snapshot, plugInRenderer.style().colorSpace(), alignedPluginRect, CompositeSourceOver);
</del><ins>+ context.drawImage(*snapshot, plugInRenderer.style().colorSpace(), alignedPluginRect, CompositeSourceOver);
</ins><span class="cx"> return false;
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderThemeWincpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderThemeWin.cpp (191048 => 191049)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderThemeWin.cpp        2015-10-14 17:29:18 UTC (rev 191048)
+++ trunk/Source/WebCore/rendering/RenderThemeWin.cpp        2015-10-14 18:10:32 UTC (rev 191049)
</span><span class="lines">@@ -892,7 +892,7 @@
</span><span class="cx">
</span><span class="cx"> static Image* cancelImage = Image::loadPlatformResource("searchCancel").leakRef();
</span><span class="cx"> static Image* cancelPressedImage = Image::loadPlatformResource("searchCancelPressed").leakRef();
</span><del>- paintInfo.context().drawImage(isPressed(o) ? cancelPressedImage : cancelImage, o.style().colorSpace(), bounds);
</del><ins>+ paintInfo.context().drawImage(isPressed(o) ? *cancelPressedImage : *cancelImage, o.style().colorSpace(), bounds);
</ins><span class="cx"> return false;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -940,7 +940,7 @@
</span><span class="cx"> bounds.setY(parentBox.y() + (parentBox.height() - bounds.height() + 1) / 2);
</span><span class="cx">
</span><span class="cx"> static Image* magnifierImage = Image::loadPlatformResource("searchMagnifier").leakRef();
</span><del>- paintInfo.context().drawImage(magnifierImage, o.style().colorSpace(), bounds);
</del><ins>+ paintInfo.context().drawImage(*magnifierImage, o.style().colorSpace(), bounds);
</ins><span class="cx"> return false;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -975,7 +975,7 @@
</span><span class="cx"> bounds.setY(parentBox.y() + (parentBox.height() - bounds.height() + 1) / 2);
</span><span class="cx">
</span><span class="cx"> static Image* magnifierImage = Image::loadPlatformResource("searchMagnifierResults").leakRef();
</span><del>- paintInfo.context().drawImage(magnifierImage, o.style().colorSpace(), bounds);
</del><ins>+ paintInfo.context().drawImage(*magnifierImage, o.style().colorSpace(), bounds);
</ins><span class="cx"> return false;
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingshapesShapecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/shapes/Shape.cpp (191048 => 191049)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/shapes/Shape.cpp        2015-10-14 17:29:18 UTC (rev 191048)
+++ trunk/Source/WebCore/rendering/shapes/Shape.cpp        2015-10-14 18:10:32 UTC (rev 191049)
</span><span class="lines">@@ -184,7 +184,8 @@
</span><span class="cx">
</span><span class="cx"> if (imageBuffer) {
</span><span class="cx"> GraphicsContext& graphicsContext = imageBuffer->context();
</span><del>- graphicsContext.drawImage(image, ColorSpaceDeviceRGB, IntRect(IntPoint(), imageRect.size()));
</del><ins>+ if (image)
+ graphicsContext.drawImage(*image, ColorSpaceDeviceRGB, IntRect(IntPoint(), imageRect.size()));
</ins><span class="cx">
</span><span class="cx"> RefPtr<Uint8ClampedArray> pixelArray = imageBuffer->getUnmultipliedImageData(IntRect(IntPoint(), imageRect.size()));
</span><span class="cx"> unsigned pixelArrayLength = pixelArray->length();
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingshapesShapeOutsideInfocpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/shapes/ShapeOutsideInfo.cpp (191048 => 191049)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/shapes/ShapeOutsideInfo.cpp        2015-10-14 17:29:18 UTC (rev 191048)
+++ trunk/Source/WebCore/rendering/shapes/ShapeOutsideInfo.cpp        2015-10-14 18:10:32 UTC (rev 191049)
</span><span class="lines">@@ -158,7 +158,6 @@
</span><span class="cx">
</span><span class="cx"> ASSERT(!styleImage->isPendingImage());
</span><span class="cx"> RefPtr<Image> image = styleImage->image(const_cast<RenderBox*>(&m_renderer), imageSize);
</span><del>-
</del><span class="cx"> return Shape::createRasterShape(image.get(), shapeImageThreshold, imageRect, marginRect, writingMode, margin);
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingstyleNinePieceImagecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/style/NinePieceImage.cpp (191048 => 191049)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/style/NinePieceImage.cpp        2015-10-14 17:29:18 UTC (rev 191048)
+++ trunk/Source/WebCore/rendering/style/NinePieceImage.cpp        2015-10-14 18:10:32 UTC (rev 191049)
</span><span class="lines">@@ -206,6 +206,9 @@
</span><span class="cx"> Vector<FloatSize> tileScales = computeTileScales(destinationRects, sourceRects, horizontalRule(), verticalRule());
</span><span class="cx">
</span><span class="cx"> RefPtr<Image> image = styleImage->image(renderer, source);
</span><ins>+ if (!image)
+ return;
+
</ins><span class="cx"> ColorSpace colorSpace = style.colorSpace();
</span><span class="cx">
</span><span class="cx"> for (ImagePiece piece = MinPiece; piece < MaxPiece; ++piece) {
</span><span class="lines">@@ -213,13 +216,13 @@
</span><span class="cx"> continue;
</span><span class="cx">
</span><span class="cx"> if (isCornerPiece(piece)) {
</span><del>- graphicsContext.drawImage(image.get(), colorSpace, destinationRects[piece], sourceRects[piece], op);
</del><ins>+ graphicsContext.drawImage(*image, colorSpace, destinationRects[piece], sourceRects[piece], op);
</ins><span class="cx"> continue;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> Image::TileRule hRule = isHorizontalPiece(piece) ? static_cast<Image::TileRule>(horizontalRule()) : Image::StretchTile;
</span><span class="cx"> Image::TileRule vRule = isVerticalPiece(piece) ? static_cast<Image::TileRule>(verticalRule()) : Image::StretchTile;
</span><del>- graphicsContext.drawTiledImage(image.get(), colorSpace, destinationRects[piece], sourceRects[piece], tileScales[piece], hRule, vRule, op);
</del><ins>+ graphicsContext.drawTiledImage(*image, colorSpace, destinationRects[piece], sourceRects[piece], tileScales[piece], hRule, vRule, op);
</ins><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingsvgRenderSVGImagecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/svg/RenderSVGImage.cpp (191048 => 191049)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/svg/RenderSVGImage.cpp        2015-10-14 17:29:18 UTC (rev 191048)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGImage.cpp        2015-10-14 18:10:32 UTC (rev 191049)
</span><span class="lines">@@ -161,12 +161,15 @@
</span><span class="cx"> void RenderSVGImage::paintForeground(PaintInfo& paintInfo)
</span><span class="cx"> {
</span><span class="cx"> RefPtr<Image> image = imageResource().image();
</span><ins>+ if (!image)
+ return;
+
</ins><span class="cx"> FloatRect destRect = m_objectBoundingBox;
</span><span class="cx"> FloatRect srcRect(0, 0, image->width(), image->height());
</span><span class="cx">
</span><span class="cx"> imageElement().preserveAspectRatio().transformRect(destRect, srcRect);
</span><span class="cx">
</span><del>- paintInfo.context().drawImage(image.get(), ColorSpaceDeviceRGB, destRect, srcRect);
</del><ins>+ paintInfo.context().drawImage(*image, ColorSpaceDeviceRGB, destRect, srcRect);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void RenderSVGImage::invalidateBufferedForeground()
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingsvgRenderSVGResourceFiltercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp (191048 => 191049)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp        2015-10-14 17:29:18 UTC (rev 191048)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp        2015-10-14 18:10:32 UTC (rev 191049)
</span><span class="lines">@@ -270,7 +270,7 @@
</span><span class="cx"> context->concatCTM(filterData->shearFreeAbsoluteTransform.inverse());
</span><span class="cx">
</span><span class="cx"> context->scale(FloatSize(1 / filterData->filter->filterResolution().width(), 1 / filterData->filter->filterResolution().height()));
</span><del>- context->drawImageBuffer(resultImage, renderer.style().colorSpace(), lastEffect->absolutePaintRect());
</del><ins>+ context->drawImageBuffer(*resultImage, renderer.style().colorSpace(), lastEffect->absolutePaintRect());
</ins><span class="cx"> context->scale(filterData->filter->filterResolution());
</span><span class="cx">
</span><span class="cx"> context->concatCTM(filterData->shearFreeAbsoluteTransform);
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingsvgSVGRenderingContextcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/svg/SVGRenderingContext.cpp (191048 => 191049)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/svg/SVGRenderingContext.cpp        2015-10-14 17:29:18 UTC (rev 191048)
+++ trunk/Source/WebCore/rendering/svg/SVGRenderingContext.cpp        2015-10-14 18:10:32 UTC (rev 191049)
</span><span class="lines">@@ -309,14 +309,15 @@
</span><span class="cx">
</span><span class="cx"> void SVGRenderingContext::clipToImageBuffer(GraphicsContext& context, const AffineTransform& absoluteTransform, const FloatRect& targetRect, std::unique_ptr<ImageBuffer>& imageBuffer, bool safeToClear)
</span><span class="cx"> {
</span><del>- ASSERT(imageBuffer);
</del><ins>+ if (!imageBuffer)
+ return;
</ins><span class="cx">
</span><span class="cx"> FloatRect absoluteTargetRect = calculateImageBufferRect(targetRect, absoluteTransform);
</span><span class="cx">
</span><span class="cx"> // The mask image has been created in the absolute coordinate space, as the image should not be scaled.
</span><span class="cx"> // So the actual masking process has to be done in the absolute coordinate space as well.
</span><span class="cx"> context.concatCTM(absoluteTransform.inverse());
</span><del>- context.clipToImageBuffer(imageBuffer.get(), absoluteTargetRect);
</del><ins>+ context.clipToImageBuffer(*imageBuffer, absoluteTargetRect);
</ins><span class="cx"> context.concatCTM(absoluteTransform);
</span><span class="cx">
</span><span class="cx"> // When nesting resources, with objectBoundingBox as content unit types, there's no use in caching the
</span><span class="lines">@@ -360,7 +361,7 @@
</span><span class="cx"> return false;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- m_paintInfo->context().drawImageBuffer(imageBuffer.get(), ColorSpaceDeviceRGB, boundingBox);
</del><ins>+ m_paintInfo->context().drawImageBuffer(*imageBuffer, ColorSpaceDeviceRGB, boundingBox);
</ins><span class="cx"> return true;
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoresvggraphicsfiltersSVGFEImagecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/graphics/filters/SVGFEImage.cpp (191048 => 191049)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/graphics/filters/SVGFEImage.cpp        2015-10-14 17:29:18 UTC (rev 191048)
+++ trunk/Source/WebCore/svg/graphics/filters/SVGFEImage.cpp        2015-10-14 18:10:32 UTC (rev 191049)
</span><span class="lines">@@ -135,7 +135,7 @@
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- resultImage->context().drawImage(m_image.get(), ColorSpaceDeviceRGB, destRect, srcRect);
</del><ins>+ resultImage->context().drawImage(*m_image, ColorSpaceDeviceRGB, destRect, srcRect);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void FEImage::dump()
</span></span></pre></div>
<a id="trunkSourceWebKitwinChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/win/ChangeLog (191048 => 191049)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/win/ChangeLog        2015-10-14 17:29:18 UTC (rev 191048)
+++ trunk/Source/WebKit/win/ChangeLog        2015-10-14 18:10:32 UTC (rev 191049)
</span><span class="lines">@@ -1,3 +1,19 @@
</span><ins>+2015-10-14 Simon Fraser <simon.fraser@apple.com>
+
+ Change GraphicsContext image-drawing functions to take references
+ https://bugs.webkit.org/show_bug.cgi?id=150108
+
+ Reviewed by Tim Horton and Sam Weinig.
+
+ Change GraphicsContext::drawImage(), drawTiledImage(), drawImageBuffer(), clipToImageBuffer()
+ and isCompatibleWithBuffer() to take references, and adjust calling code, adding
+ null-checks where necessary.
+
+ * FullscreenVideoController.cpp:
+ (HUDButton::draw):
+ * Plugins/PluginView.cpp:
+ (WebCore::PluginView::paintMissingPluginIcon):
+
</ins><span class="cx"> 2015-10-09 Anders Carlsson <andersca@apple.com>
</span><span class="cx">
</span><span class="cx"> Don't allow plug-ins to override image types for <embed> elements
</span></span></pre></div>
<a id="trunkSourceWebKitwinFullscreenVideoControllercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/win/FullscreenVideoController.cpp (191048 => 191049)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/win/FullscreenVideoController.cpp        2015-10-14 17:29:18 UTC (rev 191048)
+++ trunk/Source/WebKit/win/FullscreenVideoController.cpp        2015-10-14 18:10:32 UTC (rev 191049)
</span><span class="lines">@@ -118,7 +118,7 @@
</span><span class="cx"> void HUDButton::draw(GraphicsContext& context)
</span><span class="cx"> {
</span><span class="cx"> Image* image = (m_showAltButton && m_buttonImageAlt) ? m_buttonImageAlt.get() : m_buttonImage.get();
</span><del>- context.drawImage(image, ColorSpaceDeviceRGB, m_rect.location());
</del><ins>+ context.drawImage(*image, ColorSpaceDeviceRGB, m_rect.location());
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> HUDSlider::HUDSlider(HUDSliderButtonShape shape, int buttonSize, const IntRect& rect)
</span></span></pre></div>
<a id="trunkSourceWebKitwinPluginsPluginViewcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/win/Plugins/PluginView.cpp (191048 => 191049)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/win/Plugins/PluginView.cpp        2015-10-14 17:29:18 UTC (rev 191048)
+++ trunk/Source/WebKit/win/Plugins/PluginView.cpp        2015-10-14 18:10:32 UTC (rev 191049)
</span><span class="lines">@@ -1122,7 +1122,7 @@
</span><span class="cx">
</span><span class="cx"> context.save();
</span><span class="cx"> context.clip(windowClipRect());
</span><del>- context.drawImage(nullPluginImage.get(), ColorSpaceDeviceRGB, imageRect.location());
</del><ins>+ context.drawImage(*nullPluginImage, ColorSpaceDeviceRGB, imageRect.location());
</ins><span class="cx"> context.restore();
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (191048 => 191049)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2015-10-14 17:29:18 UTC (rev 191048)
+++ trunk/Source/WebKit2/ChangeLog        2015-10-14 18:10:32 UTC (rev 191049)
</span><span class="lines">@@ -1,3 +1,23 @@
</span><ins>+2015-10-14 Simon Fraser <simon.fraser@apple.com>
+
+ Change GraphicsContext image-drawing functions to take references
+ https://bugs.webkit.org/show_bug.cgi?id=150108
+
+ Reviewed by Tim Horton and Sam Weinig.
+
+ Change GraphicsContext::drawImage(), drawTiledImage(), drawImageBuffer(), clipToImageBuffer()
+ and isCompatibleWithBuffer() to take references, and adjust calling code, adding
+ null-checks where necessary.
+
+ * Shared/ContextMenuContextData.cpp:
+ (WebKit::ContextMenuContextData::ContextMenuContextData):
+ * Shared/WebCoreArgumentCoders.cpp:
+ (IPC::encodeImage):
+ (IPC::encodeOptionalImage):
+ (IPC::ArgumentCoder<Cursor>::encode):
+ * WebProcess/WebPage/WebFrame.cpp:
+ (WebKit::WebFrame::createSelectionSnapshot):
+
</ins><span class="cx"> 2015-10-14 Anders Carlsson <andersca@apple.com>
</span><span class="cx">
</span><span class="cx"> Change the bundle app cache APIs to take a page
</span></span></pre></div>
<a id="trunkSourceWebKit2SharedContextMenuContextDatacpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/Shared/ContextMenuContextData.cpp (191048 => 191049)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/Shared/ContextMenuContextData.cpp        2015-10-14 17:29:18 UTC (rev 191048)
+++ trunk/Source/WebKit2/Shared/ContextMenuContextData.cpp        2015-10-14 18:10:32 UTC (rev 191049)
</span><span class="lines">@@ -58,7 +58,7 @@
</span><span class="cx">
</span><span class="cx"> // FIXME: figure out the rounding startegy for ShareableBitmap.
</span><span class="cx"> m_controlledImage = ShareableBitmap::createShareable(IntSize(image->size()), ShareableBitmap::SupportsAlpha);
</span><del>- m_controlledImage->createGraphicsContext()->drawImage(image, ColorSpaceDeviceRGB, IntPoint());
</del><ins>+ m_controlledImage->createGraphicsContext()->drawImage(*image, ColorSpaceDeviceRGB, IntPoint());
</ins><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebKit2SharedWebCoreArgumentCoderscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/Shared/WebCoreArgumentCoders.cpp (191048 => 191049)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/Shared/WebCoreArgumentCoders.cpp        2015-10-14 17:29:18 UTC (rev 191048)
+++ trunk/Source/WebKit2/Shared/WebCoreArgumentCoders.cpp        2015-10-14 18:10:32 UTC (rev 191049)
</span><span class="lines">@@ -721,9 +721,9 @@
</span><span class="cx"> return true;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-static void encodeImage(ArgumentEncoder& encoder, Image* image)
</del><ins>+static void encodeImage(ArgumentEncoder& encoder, Image& image)
</ins><span class="cx"> {
</span><del>- RefPtr<ShareableBitmap> bitmap = ShareableBitmap::createShareable(IntSize(image->size()), ShareableBitmap::SupportsAlpha);
</del><ins>+ RefPtr<ShareableBitmap> bitmap = ShareableBitmap::createShareable(IntSize(image.size()), ShareableBitmap::SupportsAlpha);
</ins><span class="cx"> bitmap->createGraphicsContext()->drawImage(image, ColorSpaceDeviceRGB, IntPoint());
</span><span class="cx">
</span><span class="cx"> ShareableBitmap::Handle handle;
</span><span class="lines">@@ -753,7 +753,7 @@
</span><span class="cx"> encoder << hasImage;
</span><span class="cx">
</span><span class="cx"> if (hasImage)
</span><del>- encodeImage(encoder, image);
</del><ins>+ encodeImage(encoder, *image);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static bool decodeOptionalImage(ArgumentDecoder& decoder, RefPtr<Image>& image)
</span><span class="lines">@@ -784,7 +784,7 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> encoder << true;
</span><del>- encodeImage(encoder, cursor.image());
</del><ins>+ encodeImage(encoder, *cursor.image());
</ins><span class="cx"> encoder << cursor.hotSpot();
</span><span class="cx"> #if ENABLE(MOUSE_CURSOR_SCALE)
</span><span class="cx"> encoder << cursor.imageScaleFactor();
</span><span class="lines">@@ -1253,7 +1253,7 @@
</span><span class="cx">
</span><span class="cx"> void ArgumentCoder<PasteboardImage>::encode(ArgumentEncoder& encoder, const PasteboardImage& pasteboardImage)
</span><span class="cx"> {
</span><del>- encodeImage(encoder, pasteboardImage.image.get());
</del><ins>+ encodeOptionalImage(encoder, pasteboardImage.image.get());
</ins><span class="cx"> encoder << pasteboardImage.url.url;
</span><span class="cx"> encoder << pasteboardImage.url.title;
</span><span class="cx"> encoder << pasteboardImage.resourceMIMEType;
</span><span class="lines">@@ -1263,7 +1263,7 @@
</span><span class="cx">
</span><span class="cx"> bool ArgumentCoder<PasteboardImage>::decode(ArgumentDecoder& decoder, PasteboardImage& pasteboardImage)
</span><span class="cx"> {
</span><del>- if (!decodeImage(decoder, pasteboardImage.image))
</del><ins>+ if (!decodeOptionalImage(decoder, pasteboardImage.image))
</ins><span class="cx"> return false;
</span><span class="cx"> if (!decoder.decode(pasteboardImage.url.url))
</span><span class="cx"> return false;
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageWebFramecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebFrame.cpp (191048 => 191049)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/WebFrame.cpp        2015-10-14 17:29:18 UTC (rev 191048)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebFrame.cpp        2015-10-14 18:10:32 UTC (rev 191049)
</span><span class="lines">@@ -838,7 +838,7 @@
</span><span class="cx"> auto graphicsContext = sharedSnapshot->createGraphicsContext();
</span><span class="cx"> float deviceScaleFactor = coreFrame()->page()->deviceScaleFactor();
</span><span class="cx"> graphicsContext->scale(FloatSize(deviceScaleFactor, deviceScaleFactor));
</span><del>- graphicsContext->drawImageBuffer(snapshot.get(), ColorSpaceDeviceRGB, FloatPoint());
</del><ins>+ graphicsContext->drawImageBuffer(*snapshot, ColorSpaceDeviceRGB, FloatPoint());
</ins><span class="cx">
</span><span class="cx"> return sharedSnapshot.release();
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageiosFindControllerIOSmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/ios/FindControllerIOS.mm (191048 => 191049)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/ios/FindControllerIOS.mm        2015-10-14 17:29:18 UTC (rev 191048)
+++ trunk/Source/WebKit2/WebProcess/WebPage/ios/FindControllerIOS.mm        2015-10-14 18:10:32 UTC (rev 191049)
</span><span class="lines">@@ -83,7 +83,7 @@
</span><span class="cx"> for (const auto& path : paths)
</span><span class="cx"> context.fillPath(path);
</span><span class="cx">
</span><del>- context.drawImage(indicatorImage, ColorSpaceDeviceRGB, overlay.bounds());
</del><ins>+ context.drawImage(*indicatorImage, ColorSpaceDeviceRGB, overlay.bounds());
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> bool FindController::updateFindIndicator(Frame& selectedFrame, bool isShowingOverlay, bool shouldAnimate)
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageiosWebPageIOSmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/ios/WebPageIOS.mm (191048 => 191049)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/ios/WebPageIOS.mm        2015-10-14 17:29:18 UTC (rev 191048)
+++ trunk/Source/WebKit2/WebProcess/WebPage/ios/WebPageIOS.mm        2015-10-14 18:10:32 UTC (rev 191049)
</span><span class="lines">@@ -2218,7 +2218,7 @@
</span><span class="cx"> FloatSize bitmapSize = scaledSize.width() < image->size().width() ? scaledSize : image->size();
</span><span class="cx"> if (RefPtr<ShareableBitmap> sharedBitmap = ShareableBitmap::createShareable(IntSize(bitmapSize), ShareableBitmap::SupportsAlpha)) {
</span><span class="cx"> auto graphicsContext = sharedBitmap->createGraphicsContext();
</span><del>- graphicsContext->drawImage(image, ColorSpaceDeviceRGB, FloatRect(0, 0, bitmapSize.width(), bitmapSize.height()));
</del><ins>+ graphicsContext->drawImage(*image, ColorSpaceDeviceRGB, FloatRect(0, 0, bitmapSize.width(), bitmapSize.height()));
</ins><span class="cx"> info.image = sharedBitmap;
</span><span class="cx"> }
</span><span class="cx"> }
</span></span></pre>
</div>
</div>
</body>
</html>