diff -r 000000000000 -r 6474c204b198 gfx/layers/ipc/SharedRGBImage.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gfx/layers/ipc/SharedRGBImage.h Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,68 @@ +/* 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 SHAREDRGBIMAGE_H_ +#define SHAREDRGBIMAGE_H_ + +#include // for size_t +#include // for uint8_t +#include "ImageContainer.h" // for ISharedImage, Image, etc +#include "gfxTypes.h" +#include "mozilla/Attributes.h" // for MOZ_OVERRIDE +#include "mozilla/RefPtr.h" // for RefPtr +#include "mozilla/gfx/Point.h" // for IntSize +#include "mozilla/gfx/Types.h" // for SurfaceFormat +#include "nsCOMPtr.h" // for already_AddRefed + +namespace mozilla { +namespace ipc { +class Shmem; +} + +namespace layers { + +class BufferTextureClient; +class ImageClient; +class ISurfaceAllocator; +class TextureClient; +class SurfaceDescriptor; + +already_AddRefed CreateSharedRGBImage(ImageContainer* aImageContainer, + nsIntSize aSize, + gfxImageFormat aImageFormat); + +/** + * Stores RGB data in shared memory + * It is assumed that the image width and stride are equal + */ +class SharedRGBImage : public Image + , public ISharedImage +{ +public: + SharedRGBImage(ImageClient* aCompositable); + ~SharedRGBImage(); + + virtual ISharedImage* AsSharedImage() MOZ_OVERRIDE { return this; } + + virtual TextureClient* GetTextureClient(CompositableClient* aClient) MOZ_OVERRIDE; + + virtual uint8_t* GetBuffer() MOZ_OVERRIDE; + + gfx::IntSize GetSize(); + + size_t GetBufferSize(); + + TemporaryRef GetAsSourceSurface(); + + bool Allocate(gfx::IntSize aSize, gfx::SurfaceFormat aFormat); +private: + gfx::IntSize mSize; + RefPtr mCompositable; + RefPtr mTextureClient; +}; + +} // namespace layers +} // namespace mozilla + +#endif