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

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: fix test 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 d54204ea18c56d148fc3e8ff9213d10177bc65ec..9668f847da74eb4312a6191c9b6f9d46dbe66e5a 100644
--- a/third_party/WebKit/Source/modules/canvas2d/BaseRenderingContext2D.cpp
+++ b/third_party/WebKit/Source/modules/canvas2d/BaseRenderingContext2D.cpp
@@ -93,6 +93,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