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