author | Bas Schouten <bschouten@mozilla.com> |
Fri, 19 Jun 2015 01:07:22 +0200 | |
changeset 249687 | d9e42c13cc2ff2cd0196f2c10fca8b0ed7577811 |
parent 249686 | b062850ea136ee383d9be7b5963c7bed9e7fe918 |
child 249688 | bd11811fd67a43f8e97be5fdd999f54934590dd7 |
push id | 28936 |
push user | ryanvm@gmail.com |
push date | Fri, 19 Jun 2015 20:34:42 +0000 |
treeherder | mozilla-central@c319f262ce3e [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | nical |
bugs | 1167235 |
milestone | 41.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/gfx/layers/CopyableCanvasLayer.cpp +++ b/gfx/layers/CopyableCanvasLayer.cpp @@ -59,56 +59,48 @@ CopyableCanvasLayer::Initialize(const Da if (aData.mFrontbufferGLTex) { gfx::IntSize size(aData.mSize.width, aData.mSize.height); mGLFrontbuffer = SharedSurface_Basic::Wrap(aData.mGLContext, size, aData.mHasAlpha, aData.mFrontbufferGLTex); } } else if (aData.mBufferProvider) { mBufferProvider = aData.mBufferProvider; - } else if (aData.mDrawTarget) { - mDrawTarget = aData.mDrawTarget; - mSurface = mDrawTarget->Snapshot(); } else { MOZ_CRASH("CanvasLayer created without mSurface, mDrawTarget or mGLContext?"); } mBounds.SetRect(0, 0, aData.mSize.width, aData.mSize.height); } bool CopyableCanvasLayer::IsDataValid(const Data& aData) { return mGLContext == aData.mGLContext; } void CopyableCanvasLayer::UpdateTarget(DrawTarget* aDestTarget) { - if (mDrawTarget) { - mDrawTarget->Flush(); - mSurface = mDrawTarget->Snapshot(); - } - if (mBufferProvider) { mSurface = mBufferProvider->GetSnapshot(); } if (!mGLContext && aDestTarget) { NS_ASSERTION(mSurface, "Must have surface to draw!"); if (mSurface) { aDestTarget->CopySurface(mSurface, IntRect(0, 0, mBounds.width, mBounds.height), IntPoint(0, 0)); mSurface = nullptr; } return; } - if (mDrawTarget || mBufferProvider) { + if (mBufferProvider) { return; } MOZ_ASSERT(mGLContext); SharedSurface* frontbuffer = nullptr; if (mGLFrontbuffer) { frontbuffer = mGLFrontbuffer.get();
--- a/gfx/layers/CopyableCanvasLayer.h +++ b/gfx/layers/CopyableCanvasLayer.h @@ -49,17 +49,16 @@ public: protected: void UpdateTarget(gfx::DrawTarget* aDestTarget = nullptr); RefPtr<gfx::SourceSurface> mSurface; nsRefPtr<gl::GLContext> mGLContext; GLuint mCanvasFrontbufferTexID; RefPtr<PersistentBufferProvider> mBufferProvider; - mozilla::RefPtr<mozilla::gfx::DrawTarget> mDrawTarget; UniquePtr<gl::SharedSurface> mGLFrontbuffer; bool mIsAlphaPremultiplied; gl::OriginPos mOriginPos; RefPtr<gfx::DataSourceSurface> mCachedTempSurface;
--- a/gfx/layers/Layers.h +++ b/gfx/layers/Layers.h @@ -2135,27 +2135,25 @@ protected: * * After Initialize is called, the underlying canvas Surface/GLContext * must not be modified during a layer transaction. */ class CanvasLayer : public Layer { public: struct Data { Data() - : mDrawTarget(nullptr) - , mBufferProvider(nullptr) + : mBufferProvider(nullptr) , mGLContext(nullptr) , mFrontbufferGLTex(0) , mSize(0,0) , mHasAlpha(false) , mIsGLAlphaPremult(true) { } // One of these two must be specified for Canvas2D, but never both - mozilla::gfx::DrawTarget* mDrawTarget; // a DrawTarget for the canvas contents PersistentBufferProvider* mBufferProvider; // A BufferProvider for the Canvas contents mozilla::gl::GLContext* mGLContext; // or this, for GL. // Frontbuffer override uint32_t mFrontbufferGLTex; // The size of the canvas content gfx::IntSize mSize;