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

Unified Diff: third_party/WebKit/Source/platform/graphics/ImageBuffer.cpp

Issue 2069143002: Limit the number of accelerated canvases that can exist in a render process (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix layout test Created 4 years, 6 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
« no previous file with comments | « third_party/WebKit/Source/platform/graphics/ImageBuffer.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/WebKit/Source/platform/graphics/ImageBuffer.cpp
diff --git a/third_party/WebKit/Source/platform/graphics/ImageBuffer.cpp b/third_party/WebKit/Source/platform/graphics/ImageBuffer.cpp
index ccc1972b4c5258a934ce745d65d6dac9025ae82e..e545ca2a8abcb99ab34f56dc9d020bfd3e21bf34 100644
--- a/third_party/WebKit/Source/platform/graphics/ImageBuffer.cpp
+++ b/third_party/WebKit/Source/platform/graphics/ImageBuffer.cpp
@@ -87,9 +87,14 @@ ImageBuffer::ImageBuffer(PassOwnPtr<ImageBufferSurface> surface)
}
intptr_t ImageBuffer::s_globalGPUMemoryUsage = 0;
+unsigned ImageBuffer::s_globalAcceleratedImageBufferCount = 0;
ImageBuffer::~ImageBuffer()
{
+ if (m_gpuMemoryUsage) {
+ DCHECK_GT(s_globalAcceleratedImageBufferCount, 0u);
+ s_globalAcceleratedImageBufferCount--;
+ }
ImageBuffer::s_globalGPUMemoryUsage -= m_gpuMemoryUsage;
}
@@ -299,7 +304,7 @@ bool ImageBuffer::getImageData(Multiply multiplied, const IntRect& rect, WTF::Ar
return true;
}
- ASSERT(canvas());
+ DCHECK(canvas());
RefPtr<SkImage> snapshot = m_surface->newImageSnapshot(PreferNoAcceleration, SnapshotReasonGetImageData);
if (!snapshot)
return false;
@@ -365,11 +370,16 @@ void ImageBuffer::updateGPUMemoryUsage() const
checkedGPUUsage *= this->size().height();
intptr_t gpuMemoryUsage = checkedGPUUsage.ValueOrDefault(std::numeric_limits<intptr_t>::max());
+ if (!m_gpuMemoryUsage) // was not accelerated before
+ s_globalAcceleratedImageBufferCount++;
+
s_globalGPUMemoryUsage += (gpuMemoryUsage - m_gpuMemoryUsage);
m_gpuMemoryUsage = gpuMemoryUsage;
- } else if (m_gpuMemoryUsage > 0) {
+ } else if (m_gpuMemoryUsage) {
// In case of switching from accelerated to non-accelerated mode,
// the GPU memory usage needs to be updated too.
+ DCHECK_GT(s_globalAcceleratedImageBufferCount, 0u);
+ s_globalAcceleratedImageBufferCount--;
s_globalGPUMemoryUsage -= m_gpuMemoryUsage;
m_gpuMemoryUsage = 0;
}
« no previous file with comments | « third_party/WebKit/Source/platform/graphics/ImageBuffer.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698