diff --git a/dom/canvas/CanvasRenderingContext2D.cpp b/dom/canvas/CanvasRenderingContext2D.cpp index 8a90bd3072a6..14b6dfb1af11 100644 --- a/dom/canvas/CanvasRenderingContext2D.cpp +++ b/dom/canvas/CanvasRenderingContext2D.cpp @@ -1874,10 +1874,9 @@ NS_IMETHODIMP CanvasRenderingContext2D::SetDimensions(int32_t aWidth, int32_t aHeight) { bool retainBuffer = false; - // See bug 1318283 as to why we are disabling this optimization. - // Based on the results of the investigation, this may go away - // completely or come back. - // retainBuffer = (aWidth == mWidth && aHeight == mHeight); + if (aWidth == mWidth && aHeight == mHeight) { + retainBuffer = true; + } ClearTarget(retainBuffer); // Zero sized surfaces can cause problems. diff --git a/dom/canvas/CanvasRenderingContext2D.h b/dom/canvas/CanvasRenderingContext2D.h index 28433bc863dd..c518adf954c0 100644 --- a/dom/canvas/CanvasRenderingContext2D.h +++ b/dom/canvas/CanvasRenderingContext2D.h @@ -999,6 +999,7 @@ protected: bool isWriteOnly = mCanvasElement && mCanvasElement->IsWriteOnly(); if (CurrentState().filterSourceGraphicTainted != isWriteOnly) { UpdateFilter(); + EnsureTarget(); } MOZ_ASSERT(CurrentState().filterSourceGraphicTainted == isWriteOnly); return CurrentState().filter;