diff -r 000000000000 -r 6474c204b198 gfx/layers/basic/MacIOSurfaceTextureHostBasic.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gfx/layers/basic/MacIOSurfaceTextureHostBasic.h Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,91 @@ +/* -*- Mode: C++; tab-width: 20; 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 MOZILLA_GFX_MACIOSURFACETEXTUREHOST_BASIC_H +#define MOZILLA_GFX_MACIOSURFACETEXTUREHOST_BASIC_H + +#include "mozilla/layers/TextureHostBasic.h" + +class MacIOSurface; + +namespace mozilla { +namespace layers { + +class BasicCompositor; + +/** + * A texture source meant for use with BasicCompositor. + * + * It does not own any GL texture, and attaches its shared handle to one of + * the compositor's temporary textures when binding. + */ +class MacIOSurfaceTextureSourceBasic + : public TextureSourceBasic, + public NewTextureSource +{ +public: + MacIOSurfaceTextureSourceBasic(BasicCompositor* aCompositor, + MacIOSurface* aSurface); + virtual ~MacIOSurfaceTextureSourceBasic(); + + virtual TextureSourceBasic* AsSourceBasic() MOZ_OVERRIDE { return this; } + + virtual gfx::IntSize GetSize() const MOZ_OVERRIDE; + virtual gfx::SurfaceFormat GetFormat() const MOZ_OVERRIDE; + virtual gfx::SourceSurface* GetSurface(gfx::DrawTarget* aTarget) MOZ_OVERRIDE; + + virtual void DeallocateDeviceData() MOZ_OVERRIDE { } + + virtual void SetCompositor(Compositor* aCompositor) MOZ_OVERRIDE; + +protected: + BasicCompositor* mCompositor; + RefPtr mSurface; + RefPtr mSourceSurface; +}; + +/** + * A TextureHost for shared MacIOSurface + * + * Most of the logic actually happens in MacIOSurfaceTextureSourceBasic. + */ +class MacIOSurfaceTextureHostBasic : public TextureHost +{ +public: + MacIOSurfaceTextureHostBasic(TextureFlags aFlags, + const SurfaceDescriptorMacIOSurface& aDescriptor); + + virtual void SetCompositor(Compositor* aCompositor) MOZ_OVERRIDE; + + virtual bool Lock() MOZ_OVERRIDE; + + virtual gfx::SurfaceFormat GetFormat() const MOZ_OVERRIDE; + + virtual NewTextureSource* GetTextureSources() MOZ_OVERRIDE + { + return mTextureSource; + } + + virtual TemporaryRef GetAsSurface() MOZ_OVERRIDE + { + return nullptr; // XXX - implement this (for MOZ_DUMP_PAINTING) + } + + virtual gfx::IntSize GetSize() const MOZ_OVERRIDE; + +#ifdef MOZ_LAYERS_HAVE_LOG + virtual const char* Name() { return "MacIOSurfaceTextureHostBasic"; } +#endif + +protected: + BasicCompositor* mCompositor; + RefPtr mTextureSource; + RefPtr mSurface; +}; + +} +} + +#endif // MOZILLA_GFX_MACIOSURFACETEXTUREHOSTOGL_BASIC_H