/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- * 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 http://mozilla.org/MPL/2.0/. */ #ifndef GFX_WEBRENDERIMAGELAYER_H #define GFX_WEBRENDERIMAGELAYER_H #include "ImageLayers.h" #include "mozilla/layers/WebRenderLayer.h" #include "mozilla/layers/WebRenderLayerManager.h" namespace mozilla { namespace layers { class ImageClient; class WebRenderImageLayer : public WebRenderLayer, public ImageLayer { public: explicit WebRenderImageLayer(WebRenderLayerManager* aLayerManager); virtual already_AddRefed GetAsSourceSurface() override; virtual void ClearCachedResources() override; protected: virtual ~WebRenderImageLayer(); WebRenderLayerManager* Manager() { return static_cast(mManager); } public: Layer* GetLayer() override { return this; } void RenderLayer(wr::DisplayListBuilder& aBuilder) override; Maybe RenderMaskLayer(const gfx::Matrix4x4& aTransform) override; protected: CompositableType GetImageClientType(); class Holder { public: explicit Holder(WebRenderImageLayer* aLayer) : mLayer(aLayer) {} WebRenderImageLayer* operator ->() const { return mLayer; } private: WebRenderImageLayer* mLayer; }; wr::MaybeExternalImageId mExternalImageId; Maybe mKey; RefPtr mImageClient; CompositableType mImageClientTypeContainer; Maybe mPipelineId; MozPromiseRequestHolder mPipelineIdRequest; }; } // namespace layers } // namespace mozilla #endif // GFX_WEBRENDERIMAGELAYER_H