/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* vim: set ts=8 sts=2 et sw=2 tw=80: */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ #ifndef mozilla_layers_TextureRecorded_h #define mozilla_layers_TextureRecorded_h #include "TextureClient.h" #include "mozilla/layers/CanvasChild.h" #include "mozilla/layers/LayersTypes.h" namespace mozilla { namespace layers { class RecordedTextureData final : public TextureData { public: RecordedTextureData(already_AddRefed aCanvasChild, gfx::IntSize aSize, gfx::SurfaceFormat aFormat, TextureType aTextureType); void FillInfo(TextureData::Info& aInfo) const final; bool Lock(OpenMode aMode) final; void Unlock() final; already_AddRefed BorrowDrawTarget() final; already_AddRefed BorrowSnapshot() final; void Deallocate(LayersIPCChannel* aAllocator) final; bool Serialize(SurfaceDescriptor& aDescriptor) final; void OnForwardedToHost() final; TextureFlags GetTextureFlags() const final; private: DISALLOW_COPY_AND_ASSIGN(RecordedTextureData); ~RecordedTextureData() override; int64_t mTextureId; RefPtr mCanvasChild; gfx::IntSize mSize; gfx::SurfaceFormat mFormat; RefPtr mDT; RefPtr mSnapshot; }; } // namespace layers } // namespace mozilla #endif // mozilla_layers_TextureRecorded_h