Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(441)

Unified Diff: third_party/WebKit/Source/core/html/HTMLCanvasElement.cpp

Issue 2125853002: Replace RefPtrs with raw pointers (imageFromNode in Editor.cpp) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: (rebase) Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/core/html/HTMLCanvasElement.cpp
diff --git a/third_party/WebKit/Source/core/html/HTMLCanvasElement.cpp b/third_party/WebKit/Source/core/html/HTMLCanvasElement.cpp
index c4f61a920737688205b7a09ae86f9296d2369585..4a58361e92026a4cfbb76b1c8e0bf8d4768a2a0b 100644
--- a/third_party/WebKit/Source/core/html/HTMLCanvasElement.cpp
+++ b/third_party/WebKit/Source/core/html/HTMLCanvasElement.cpp
@@ -128,13 +128,6 @@ bool canCreateImageBuffer(const IntSize& size)
return true;
}
-PassRefPtr<Image> createTransparentImage(const IntSize& size)
-{
- DCHECK(canCreateImageBuffer(size));
- sk_sp<SkSurface> surface = SkSurface::MakeRasterN32Premul(size.width(), size.height());
- return StaticBitmapImage::create(fromSkSp(surface->makeImageSnapshot()));
-}
-
} // namespace
inline HTMLCanvasElement::HTMLCanvasElement(Document& document)
@@ -986,12 +979,12 @@ void HTMLCanvasElement::ensureUnacceleratedImageBuffer()
m_didFailToCreateImageBuffer = !m_imageBuffer;
}
-PassRefPtr<Image> HTMLCanvasElement::copiedImage(SourceDrawingBuffer sourceBuffer, AccelerationHint hint) const
+Image* HTMLCanvasElement::copiedImage(SourceDrawingBuffer sourceBuffer, AccelerationHint hint) const
{
if (!isPaintable())
return nullptr;
if (!m_context)
- return createTransparentImage(size());
+ return ensureTransparentImage();
bool needToUpdate = !m_copiedImage;
// The concept of SourceDrawingBuffer is valid on only WebGL.
@@ -1001,7 +994,7 @@ PassRefPtr<Image> HTMLCanvasElement::copiedImage(SourceDrawingBuffer sourceBuffe
m_copiedImage = buffer()->newImageSnapshot(hint, SnapshotReasonGetCopiedImage);
updateExternallyAllocatedMemory();
}
- return m_copiedImage;
+ return m_copiedImage.get();
}
void HTMLCanvasElement::discardImageBuffer()
@@ -1073,7 +1066,7 @@ PassRefPtr<Image> HTMLCanvasElement::getSourceImageForCanvas(SourceImageStatus*
if (!m_context) {
*status = NormalSourceImageStatus;
- return createTransparentImage(size());
+ return ensureTransparentImage();
}
if (m_context->is3d()) {
@@ -1200,4 +1193,14 @@ bool HTMLCanvasElement::createSurfaceLayer()
return m_surfaceLayerBridge->createSurfaceLayer(this->width(), this->height());
}
+Image* HTMLCanvasElement::ensureTransparentImage() const
+{
+ if (m_transparentImage && m_transparentImage->size() == size())
+ return m_transparentImage.get();
+ DCHECK(canCreateImageBuffer(size()));
+ sk_sp<SkSurface> surface = SkSurface::MakeRasterN32Premul(size().width(), size().height());
+ m_transparentImage = StaticBitmapImage::create(fromSkSp(surface->makeImageSnapshot()));
+ return m_transparentImage.get();
+}
+
} // namespace blink

Powered by Google App Engine
This is Rietveld 408576698