void BasicShadowCanvasLayer::Swap(const CanvasSurface& aNewFront, bool needYFlip, CanvasSurface* aNewBack) { AutoOpenSurface autoSurface(OPEN_READ_ONLY, aNewFront); // Destroy mFrontBuffer if size different gfxIntSize sz = autoSurface.Size(); bool surfaceConfigChanged = sz != gfxIntSize(mBounds.width, mBounds.height); if (IsSurfaceDescriptorValid(mFrontSurface)) { AutoOpenSurface autoFront(OPEN_READ_ONLY, mFrontSurface); surfaceConfigChanged = surfaceConfigChanged || autoSurface.ContentType() != autoFront.ContentType(); } if (surfaceConfigChanged) { DestroyFrontBuffer(); mBounds.SetRect(0, 0, sz.width, sz.height); } mNeedsYFlip = needYFlip; // If mFrontBuffer if (IsSurfaceDescriptorValid(mFrontSurface)) { *aNewBack = mFrontSurface; } else { *aNewBack = null_t(); } mFrontSurface = aNewFront; }
void ContentClientRemote::DestroyBuffers() { if (!mTextureClient) { return; } MOZ_ASSERT(mTextureClient->GetAccessMode() == TextureClient::ACCESS_READ_WRITE); mTextureClient = nullptr; DestroyFrontBuffer(); mForwarder->DestroyThebesBuffer(this); }
void ContentClientRemoteBuffer::DestroyBuffers() { if (!mTextureClient) { return; } mOldTextures.AppendElement(mTextureClient); mTextureClient = nullptr; if (mTextureClientOnWhite) { mOldTextures.AppendElement(mTextureClientOnWhite); mTextureClientOnWhite = nullptr; } DestroyFrontBuffer(); }
virtual void Disconnect() { DestroyFrontBuffer(); ShadowCanvasLayer::Disconnect(); }