forked from mirrors/gecko-dev
		
	This patch was generated automatically by the "modeline.py" script, available here: https://github.com/amccreight/moz-source-tools/blob/master/modeline.py For every file that is modified in this patch, the changes are as follows: (1) The patch changes the file to use the exact C++ mode lines from the Mozilla coding style guide, available here: https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Coding_Style#Mode_Line (2) The patch deletes any blank lines between the mode line & the MPL boilerplate comment. (3) If the file previously had the mode lines and MPL boilerplate in a single contiguous C++ comment, then the patch splits them into separate C++ comments, to match the boilerplate in the coding style. MozReview-Commit-ID: 77D61xpSmIl --HG-- extra : rebase_source : c6162fa3cf539a07177a19838324bf368faa162b
		
			
				
	
	
		
			132 lines
		
	
	
	
		
			3.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			132 lines
		
	
	
	
		
			3.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
 | 
						|
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
 | 
						|
/* 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_TEXTUREDIB_H
 | 
						|
#define MOZILLA_GFX_TEXTUREDIB_H
 | 
						|
 | 
						|
#include "mozilla/layers/Compositor.h"
 | 
						|
#include "mozilla/layers/TextureClient.h"
 | 
						|
#include "mozilla/layers/TextureHost.h"
 | 
						|
#include "mozilla/GfxMessageUtils.h"
 | 
						|
#include "gfxWindowsPlatform.h"
 | 
						|
 | 
						|
namespace mozilla {
 | 
						|
namespace layers {
 | 
						|
 | 
						|
class DIBTextureData : public TextureData
 | 
						|
{
 | 
						|
public:
 | 
						|
  virtual bool Lock(OpenMode) override { return true; }
 | 
						|
 | 
						|
  virtual void Unlock() override {}
 | 
						|
 | 
						|
  virtual void FillInfo(TextureData::Info& aInfo) const override;
 | 
						|
 | 
						|
  virtual already_AddRefed<gfx::DrawTarget> BorrowDrawTarget() override;
 | 
						|
 | 
						|
  static
 | 
						|
  DIBTextureData* Create(gfx::IntSize aSize, gfx::SurfaceFormat aFormat,
 | 
						|
                         LayersIPCChannel* aAllocator);
 | 
						|
 | 
						|
protected:
 | 
						|
  DIBTextureData(gfx::IntSize aSize, gfx::SurfaceFormat aFormat,
 | 
						|
                 gfxWindowsSurface* aSurface)
 | 
						|
  : mSurface(aSurface)
 | 
						|
  , mSize(aSize)
 | 
						|
  , mFormat(aFormat)
 | 
						|
  {
 | 
						|
    MOZ_ASSERT(aSurface);
 | 
						|
  }
 | 
						|
 | 
						|
  RefPtr<gfxWindowsSurface> mSurface;
 | 
						|
  gfx::IntSize mSize;
 | 
						|
  gfx::SurfaceFormat mFormat;
 | 
						|
};
 | 
						|
 | 
						|
/**
 | 
						|
  * This is meant for a texture host which does a direct upload from
 | 
						|
  * Updated to a Compositor specific DataTextureSource and therefor doesn't
 | 
						|
  * need any specific Lock/Unlock magic.
 | 
						|
  */
 | 
						|
class TextureHostDirectUpload : public TextureHost
 | 
						|
{
 | 
						|
public:
 | 
						|
  TextureHostDirectUpload(TextureFlags aFlags,
 | 
						|
                          gfx::SurfaceFormat aFormat,
 | 
						|
                          gfx::IntSize aSize)
 | 
						|
    : TextureHost(aFlags)
 | 
						|
    , mFormat(aFormat)
 | 
						|
    , mSize(aSize)
 | 
						|
    , mIsLocked(false)
 | 
						|
  { }
 | 
						|
 | 
						|
  virtual void DeallocateDeviceData() override;
 | 
						|
 | 
						|
  virtual void SetTextureSourceProvider(TextureSourceProvider* aProvider) override;
 | 
						|
 | 
						|
  virtual gfx::SurfaceFormat GetFormat() const override { return mFormat; }
 | 
						|
 | 
						|
  virtual gfx::IntSize GetSize() const override { return mSize; }
 | 
						|
 | 
						|
  virtual bool Lock() override;
 | 
						|
 | 
						|
  virtual void Unlock() override;
 | 
						|
 | 
						|
  virtual bool HasIntermediateBuffer() const { return true; }
 | 
						|
 | 
						|
  virtual bool BindTextureSource(CompositableTextureSourceRef& aTexture) override;
 | 
						|
  virtual bool AcquireTextureSource(CompositableTextureSourceRef& aTexture) override;
 | 
						|
 | 
						|
protected:
 | 
						|
  RefPtr<TextureSourceProvider> mProvider;
 | 
						|
  RefPtr<DataTextureSource> mTextureSource;
 | 
						|
  gfx::SurfaceFormat mFormat;
 | 
						|
  gfx::IntSize mSize;
 | 
						|
  bool mIsLocked;
 | 
						|
};
 | 
						|
 | 
						|
class DIBTextureHost : public TextureHostDirectUpload
 | 
						|
{
 | 
						|
public:
 | 
						|
  DIBTextureHost(TextureFlags aFlags,
 | 
						|
                 const SurfaceDescriptorDIB& aDescriptor);
 | 
						|
 | 
						|
  virtual already_AddRefed<gfx::DataSourceSurface> GetAsSurface() override
 | 
						|
  {
 | 
						|
    return nullptr; // TODO: cf bug 872568
 | 
						|
  }
 | 
						|
 | 
						|
protected:
 | 
						|
  virtual void UpdatedInternal(const nsIntRegion* aRegion = nullptr) override;
 | 
						|
 | 
						|
  RefPtr<gfxWindowsSurface> mSurface;
 | 
						|
};
 | 
						|
 | 
						|
class TextureHostFileMapping : public TextureHostDirectUpload
 | 
						|
{
 | 
						|
public:
 | 
						|
  TextureHostFileMapping(TextureFlags aFlags,
 | 
						|
                         const SurfaceDescriptorFileMapping& aDescriptor);
 | 
						|
  ~TextureHostFileMapping();
 | 
						|
 | 
						|
  virtual already_AddRefed<gfx::DataSourceSurface> GetAsSurface() override
 | 
						|
  {
 | 
						|
    MOZ_CRASH("GFX: TextureHostFileMapping::GetAsSurface not implemented");
 | 
						|
                 // Not implemented! It would be tricky to keep track of the
 | 
						|
                 // scope of the file mapping. We could do this through UserData
 | 
						|
                 // on the DataSourceSurface but we don't need this right now.
 | 
						|
  }
 | 
						|
 | 
						|
protected:
 | 
						|
  virtual void UpdatedInternal(const nsIntRegion* aRegion = nullptr) override;
 | 
						|
 | 
						|
  HANDLE mFileMapping;
 | 
						|
};
 | 
						|
 | 
						|
}
 | 
						|
}
 | 
						|
 | 
						|
#endif /* MOZILLA_GFX_TEXTUREDIB_H */
 |