diff --git a/gfx/layers/basic/BasicCanvasLayer.cpp b/gfx/layers/basic/BasicCanvasLayer.cpp index 2da7d42ac19..0408467faec 100644 --- a/gfx/layers/basic/BasicCanvasLayer.cpp +++ b/gfx/layers/basic/BasicCanvasLayer.cpp @@ -120,6 +120,10 @@ BasicCanvasLayer::Initialize(const Data& aData) void BasicCanvasLayer::UpdateSurface(gfxASurface* aDestSurface, Layer* aMaskLayer) { + if (!mDirty) + return; + mDirty = false; + if (mDrawTarget) { mDrawTarget->Flush(); // TODO Fix me before turning accelerated quartz canvas by default @@ -133,10 +137,6 @@ BasicCanvasLayer::UpdateSurface(gfxASurface* aDestSurface, Layer* aMaskLayer) return; } - if (!mDirty) - return; - mDirty = false; - if (mGLContext) { if (aDestSurface && aDestSurface->GetType() != gfxASurface::SurfaceTypeImage) { NS_ASSERTION(aDestSurface->GetType() == gfxASurface::SurfaceTypeImage, @@ -229,6 +229,9 @@ BasicCanvasLayer::UpdateSurface(gfxASurface* aDestSurface, Layer* aMaskLayer) void BasicCanvasLayer::Paint(gfxContext* aContext, Layer* aMaskLayer) { + if (!mDirty) + return; + if (IsHidden()) return; UpdateSurface(); @@ -393,6 +396,9 @@ BasicShadowableCanvasLayer::Paint(gfxContext* aContext, Layer* aMaskLayer) return; } + if (!mDirty) + return; + if (mGLContext && !mForceReadback && BasicManager()->GetParentBackendType() == mozilla::layers::LAYERS_OPENGL) {