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

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

Issue 1995733005: Fix 2D canvas state persistency after OffscreenCanvas.transferToImageBitmap (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 7 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/BaseRenderingContext2D.cpp
diff --git a/third_party/WebKit/Source/modules/canvas2d/BaseRenderingContext2D.cpp b/third_party/WebKit/Source/modules/canvas2d/BaseRenderingContext2D.cpp
index 29c48be833467769c8dbb93287dc9d2d2fd54f10..86e70edd2e1b50bd9ee3eb4c99003d481dd76e51 100644
--- a/third_party/WebKit/Source/modules/canvas2d/BaseRenderingContext2D.cpp
+++ b/third_party/WebKit/Source/modules/canvas2d/BaseRenderingContext2D.cpp
@@ -92,6 +92,21 @@ void BaseRenderingContext2D::restore()
validateStateStack();
}
+void BaseRenderingContext2D::restoreMatrixClipStack(SkCanvas* c) const
+{
+ if (!c)
+ return;
+ HeapVector<Member<CanvasRenderingContext2DState>>::const_iterator currState;
+ DCHECK(m_stateStack.begin() < m_stateStack.end());
+ for (currState = m_stateStack.begin(); currState < m_stateStack.end(); currState++) {
+ c->setMatrix(SkMatrix::I());
+ currState->get()->playbackClips(c);
+ c->setMatrix(affineTransformToSkMatrix(currState->get()->transform()));
+ c->save();
+ }
+ c->restore();
+}
+
static inline void convertCanvasStyleToUnionType(CanvasStyle* style, StringOrCanvasGradientOrCanvasPattern& returnValue)
{
if (CanvasGradient* gradient = style->getCanvasGradient()) {

Powered by Google App Engine
This is Rietveld 408576698