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

Unified Diff: third_party/WebKit/Source/modules/canvas2d/CanvasRenderingContext2D.cpp

Issue 2653933003: Make stream captures work on canvases that are not in the DOM. (Closed)
Patch Set: rebase Created 3 years, 10 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/modules/canvas2d/CanvasRenderingContext2D.cpp
diff --git a/third_party/WebKit/Source/modules/canvas2d/CanvasRenderingContext2D.cpp b/third_party/WebKit/Source/modules/canvas2d/CanvasRenderingContext2D.cpp
index 493afde1cc7b90f4879966f825367941e5198d25..882496e8254e4eb2432b4663661983de312b0dbd 100644
--- a/third_party/WebKit/Source/modules/canvas2d/CanvasRenderingContext2D.cpp
+++ b/third_party/WebKit/Source/modules/canvas2d/CanvasRenderingContext2D.cpp
@@ -134,7 +134,7 @@ CanvasRenderingContext2D::CanvasRenderingContext2D(
canvas->document().frame()),
this,
&CanvasRenderingContext2D::tryRestoreContextEvent),
- m_pruneLocalFontCacheScheduled(false) {
+ m_shouldPruneLocalFontCache(false) {
if (document.settings() &&
document.settings()->getAntialiasedClips2dCanvasEnabled())
m_clipAntialiasing = AntiAliased;
@@ -149,11 +149,6 @@ void CanvasRenderingContext2D::setCanvasGetContextResult(
CanvasRenderingContext2D::~CanvasRenderingContext2D() {}
-void CanvasRenderingContext2D::dispose() {
- if (m_pruneLocalFontCacheScheduled)
- Platform::current()->currentThread()->removeTaskObserver(this);
-}
-
void CanvasRenderingContext2D::validateStateStack() const {
#if DCHECK_IS_ON()
if (PaintCanvas* skCanvas = canvas()->existingDrawingCanvas()) {
@@ -362,7 +357,7 @@ void CanvasRenderingContext2D::didDraw(const SkIRect& dirtyRect) {
buffer->setHasExpensiveOp();
}
- canvas()->didDraw(SkRect::Make(dirtyRect));
+ CanvasRenderingContext::didDraw(dirtyRect);
}
bool CanvasRenderingContext2D::stateHasFilter() {
@@ -490,7 +485,7 @@ void CanvasRenderingContext2D::setFont(const String& newFont) {
DCHECK(!m_fontLRUList.contains(newFont));
m_fontLRUList.add(newFont);
pruneLocalFontCache(canvasFontCache->hardMaxFonts()); // hard limit
- schedulePruneLocalFontCacheIfNeeded(); // soft limit
+ m_shouldPruneLocalFontCache = true; // apply soft limit
modifiableState().setFont(
fontStyle->font(), canvas()->document().styleEngine().fontSelector());
}
@@ -508,31 +503,19 @@ void CanvasRenderingContext2D::setFont(const String& newFont) {
modifiableState().setUnparsedFont(newFontSafeCopy);
}
-void CanvasRenderingContext2D::schedulePruneLocalFontCacheIfNeeded() {
- if (m_pruneLocalFontCacheScheduled)
- return;
- m_pruneLocalFontCacheScheduled = true;
- Platform::current()->currentThread()->addTaskObserver(this);
-}
-
void CanvasRenderingContext2D::didProcessTask() {
- Platform::current()->currentThread()->removeTaskObserver(this);
-
+ CanvasRenderingContext::didProcessTask();
// This should be the only place where canvas() needs to be checked for
- // nullness because the circular refence with HTMLCanvasElement mean the
- // canvas and the context keep each other alive as long as the pair is
- // referenced the task observer is the only persisten refernce to this object
- // that is not traced, so didProcessTask() may be call at a time when the
+ // nullness because the circular refence with HTMLCanvasElement means the
+ // canvas and the context keep each other alive. As long as the pair is
+ // referenced, the task observer is the only persistent refernce to this
+ // object
+ // that is not traced, so didProcessTask() may be called at a time when the
// canvas has been garbage collected but not the context.
- if (!canvas())
- return;
-
- // The rendering surface needs to be prepared now because it will be too late
- // to create a layer once we are in the paint invalidation phase.
- canvas()->prepareSurfaceForPaintingIfNeeded();
-
- pruneLocalFontCache(canvas()->document().canvasFontCache()->maxFonts());
- m_pruneLocalFontCacheScheduled = false;
+ if (m_shouldPruneLocalFontCache && canvas()) {
+ m_shouldPruneLocalFontCache = false;
+ pruneLocalFontCache(canvas()->document().canvasFontCache()->maxFonts());
+ }
}
void CanvasRenderingContext2D::pruneLocalFontCache(size_t targetSize) {

Powered by Google App Engine
This is Rietveld 408576698