1 /* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*- 2 * This Source Code Form is subject to the terms of the Mozilla Public 3 * License, v. 2.0. If a copy of the MPL was not distributed with this 4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 5 6 #ifndef MOZILLA_GFX_X11TEXTURESOURCEBASIC__H 7 #define MOZILLA_GFX_X11TEXTURESOURCEBASIC__H 8 9 #include "mozilla/layers/BasicCompositor.h" 10 #include "mozilla/layers/TextureHostBasic.h" 11 #include "mozilla/layers/X11TextureHost.h" 12 #include "mozilla/gfx/2D.h" 13 14 namespace mozilla { 15 namespace layers { 16 17 class BasicCompositor; 18 19 // TextureSource for Xlib-backed surfaces. 20 class X11TextureSourceBasic 21 : public TextureSourceBasic 22 , public X11TextureSource 23 { 24 public: 25 X11TextureSourceBasic(BasicCompositor* aCompositor, gfxXlibSurface* aSurface); 26 Name()27 virtual const char* Name() const override { return "X11TextureSourceBasic"; } 28 AsSourceBasic()29 virtual X11TextureSourceBasic* AsSourceBasic() override { return this; } 30 31 virtual gfx::IntSize GetSize() const override; 32 33 virtual gfx::SurfaceFormat GetFormat() const override; 34 35 virtual gfx::SourceSurface* GetSurface(gfx::DrawTarget* aTarget) override; 36 DeallocateDeviceData()37 virtual void DeallocateDeviceData() override { } 38 39 virtual void SetCompositor(Compositor* aCompositor) override; 40 Updated()41 virtual void Updated() override { } 42 43 static gfx::SurfaceFormat ContentTypeToSurfaceFormat(gfxContentType aType); 44 45 protected: 46 RefPtr<BasicCompositor> mCompositor; 47 RefPtr<gfxXlibSurface> mSurface; 48 RefPtr<gfx::SourceSurface> mSourceSurface; 49 }; 50 51 } // namespace layers 52 } // namespace mozilla 53 54 #endif // MOZILLA_GFX_X11TEXTURESOURCEBASIC__H 55