Bug 971946 - Remove TextureClientData r=nical

This commit is contained in:
Sotaro Ikeda 2014-05-14 06:29:52 -07:00
parent 38ebd87705
commit 5bb3191d5e
13 changed files with 1 additions and 273 deletions

View File

@ -68,13 +68,6 @@ TextureClientX11::ToSurfaceDescriptor(SurfaceDescriptor& aOutDescriptor)
return true;
}
TextureClientData*
TextureClientX11::DropTextureData()
{
MOZ_ASSERT(!(mFlags & TextureFlags::DEALLOCATE_CLIENT));
return nullptr;
}
bool
TextureClientX11::AllocateForSurface(IntSize aSize, TextureAllocationFlags aTextureFlags)
{

View File

@ -29,8 +29,6 @@ class TextureClientX11 : public TextureClient
virtual bool ToSurfaceDescriptor(SurfaceDescriptor& aOutDescriptor) MOZ_OVERRIDE;
virtual TextureClientData* DropTextureData() MOZ_OVERRIDE;
virtual gfx::IntSize GetSize() const MOZ_OVERRIDE { return mSize; }
virtual bool Lock(OpenMode aMode) MOZ_OVERRIDE;

View File

@ -27,7 +27,6 @@ class ImageBridgeChild;
class CompositableForwarder;
class CompositableChild;
class SurfaceDescriptor;
class TextureClientData;
class PCompositableChild;
/**
* CompositableClient manages the texture-specific logic for composite layers,

View File

@ -82,7 +82,6 @@ public:
TextureChild()
: mForwarder(nullptr)
, mTextureData(nullptr)
, mTextureClient(nullptr)
, mIPCOpen(false)
{
@ -104,18 +103,6 @@ public:
SendClientRecycle();
}
/**
* Only used during the deallocation phase iff we need synchronization between
* the client and host side for deallocation (that is, when the data is going
* to be deallocated or recycled on the client side).
*/
void SetTextureData(TextureClientData* aData)
{
mTextureData = aData;
}
void DeleteTextureData();
CompositableForwarder* GetForwarder() { return mForwarder; }
ISurfaceAllocator* GetAllocator() { return mForwarder; }
@ -143,28 +130,15 @@ private:
RefPtr<CompositableForwarder> mForwarder;
RefPtr<TextureClient> mWaitForRecycle;
TextureClientData* mTextureData;
TextureClient* mTextureClient;
bool mIPCOpen;
friend class TextureClient;
};
void
TextureChild::DeleteTextureData()
{
mWaitForRecycle = nullptr;
if (mTextureData) {
mTextureData->DeallocateSharedData(GetAllocator());
delete mTextureData;
mTextureData = nullptr;
}
}
bool
TextureChild::Recv__delete__()
{
DeleteTextureData();
return true;
}
@ -362,80 +336,6 @@ TextureClient::CreateBufferTextureClient(ISurfaceAllocator* aAllocator,
return result.forget();
}
class ShmemTextureClientData : public TextureClientData
{
public:
ShmemTextureClientData(ipc::Shmem& aShmem)
: mShmem(aShmem)
{
MOZ_COUNT_CTOR(ShmemTextureClientData);
}
~ShmemTextureClientData()
{
MOZ_COUNT_CTOR(ShmemTextureClientData);
}
virtual void DeallocateSharedData(ISurfaceAllocator* allocator)
{
allocator->DeallocShmem(mShmem);
mShmem = ipc::Shmem();
}
private:
ipc::Shmem mShmem;
};
class MemoryTextureClientData : public TextureClientData
{
public:
MemoryTextureClientData(uint8_t* aBuffer)
: mBuffer(aBuffer)
{
MOZ_COUNT_CTOR(MemoryTextureClientData);
}
~MemoryTextureClientData()
{
MOZ_ASSERT(!mBuffer, "Forgot to deallocate the shared texture data?");
MOZ_COUNT_DTOR(MemoryTextureClientData);
}
virtual void DeallocateSharedData(ISurfaceAllocator*)
{
delete[] mBuffer;
mBuffer = nullptr;
}
private:
uint8_t* mBuffer;
};
TextureClientData*
MemoryTextureClient::DropTextureData()
{
if (!mBuffer) {
return nullptr;
}
TextureClientData* result = new MemoryTextureClientData(mBuffer);
MarkInvalid();
mBuffer = nullptr;
return result;
}
TextureClientData*
ShmemTextureClient::DropTextureData()
{
if (!mShmem.IsReadable()) {
return nullptr;
}
TextureClientData* result = new ShmemTextureClientData(mShmem);
MarkInvalid();
mShmem = ipc::Shmem();
return result;
}
TextureClient::TextureClient(TextureFlags aFlags)
: mFlags(aFlags)
, mShared(false)

View File

@ -80,28 +80,6 @@ public:
StereoMode aStereoMode) = 0;
};
/**
* Holds the shared data of a TextureClient, to be destroyed later.
*
* TextureClient's destructor initiates the destruction sequence of the
* texture client/host pair. If the shared data is to be deallocated on the
* host side, there is nothing to do.
* On the other hand, if the client data must be deallocated on the client
* side, the CompositableClient will ask the TextureClient to drop its shared
* data in the form of a TextureClientData object. This data will be kept alive
* until the host side confirms that it is not using the data anymore and that
* it is completely safe to deallocate the shared data.
*
* See:
* - The PTexture IPDL protocol
* - CompositableChild in TextureClient.cpp
*/
class TextureClientData {
public:
virtual void DeallocateSharedData(ISurfaceAllocator* allocator) = 0;
virtual ~TextureClientData() {}
};
/**
* TextureClient is a thin abstraction over texture data that need to be shared
* between the content process and the compositor process. It is the
@ -344,16 +322,6 @@ protected:
*/
void MarkInvalid() { mValid = false; }
/**
* Drop the shared data into a TextureClientData object and mark this
* TextureClient as invalid.
*
* The TextureClient must not hold any reference to the shared data
* after this method has been called.
* The TextureClientData is owned by the caller.
*/
virtual TextureClientData* DropTextureData() = 0;
/**
* Should only be called *once* per texture, in TextureClient::InitIPDLActor.
* Some texture implementations rely on the fact that the descriptor will be
@ -470,8 +438,6 @@ public:
virtual bool IsAllocated() const MOZ_OVERRIDE { return mAllocated; }
virtual TextureClientData* DropTextureData() MOZ_OVERRIDE;
virtual bool HasInternalBuffer() const MOZ_OVERRIDE { return true; }
mozilla::ipc::Shmem& GetShmem() { return mShmem; }
@ -506,8 +472,6 @@ public:
virtual bool HasInternalBuffer() const MOZ_OVERRIDE { return true; }
virtual TextureClientData* DropTextureData() MOZ_OVERRIDE;
protected:
uint8_t* mBuffer;
size_t mBufSize;

View File

@ -50,8 +50,6 @@ public:
virtual gfx::IntSize GetSize() const MOZ_OVERRIDE { return mSize; }
virtual TextureClientData* DropTextureData() MOZ_OVERRIDE { return nullptr; }
virtual gfx::SurfaceFormat GetFormat() const MOZ_OVERRIDE { return mFormat; }
virtual bool CanExposeDrawTarget() const MOZ_OVERRIDE { return true; }

View File

@ -304,28 +304,6 @@ TextureSourceD3D9::SurfaceToTexture(DeviceManagerD3D9* aDeviceManager,
return texture;
}
class D3D9TextureClientData : public TextureClientData
{
public:
D3D9TextureClientData(IDirect3DTexture9* aTexture)
: mTexture(aTexture)
{}
D3D9TextureClientData(gfxWindowsSurface* aWindowSurface)
: mWindowSurface(aWindowSurface)
{}
virtual void DeallocateSharedData(ISurfaceAllocator*) MOZ_OVERRIDE
{
mWindowSurface = nullptr;
mTexture = nullptr;
}
private:
RefPtr<IDirect3DTexture9> mTexture;
nsRefPtr<gfxWindowsSurface> mWindowSurface;
};
DataTextureSourceD3D9::DataTextureSourceD3D9(gfx::SurfaceFormat aFormat,
CompositorD3D9* aCompositor,
TextureFlags aFlags,
@ -702,15 +680,6 @@ CairoTextureClientD3D9::AllocateForSurface(gfx::IntSize aSize, TextureAllocation
return true;
}
TextureClientData*
CairoTextureClientD3D9::DropTextureData()
{
TextureClientData* data = new D3D9TextureClientData(mTexture);
mTexture = nullptr;
MarkInvalid();
return data;
}
DIBTextureClientD3D9::DIBTextureClientD3D9(gfx::SurfaceFormat aFormat, TextureFlags aFlags)
: TextureClient(aFlags)
, mFormat(aFormat)
@ -793,15 +762,6 @@ DIBTextureClientD3D9::AllocateForSurface(gfx::IntSize aSize, TextureAllocationFl
return true;
}
TextureClientData*
DIBTextureClientD3D9::DropTextureData()
{
TextureClientData* data = new D3D9TextureClientData(mSurface);
mSurface = nullptr;
MarkInvalid();
return data;
}
SharedTextureClientD3D9::SharedTextureClientD3D9(gfx::SurfaceFormat aFormat, TextureFlags aFlags)
: TextureClient(aFlags)
, mFormat(aFormat)
@ -816,15 +776,6 @@ SharedTextureClientD3D9::~SharedTextureClientD3D9()
MOZ_COUNT_DTOR(SharedTextureClientD3D9);
}
TextureClientData*
SharedTextureClientD3D9::DropTextureData()
{
TextureClientData* data = new D3D9TextureClientData(mTexture);
mTexture = nullptr;
MarkInvalid();
return data;
}
bool
SharedTextureClientD3D9::Lock(OpenMode)
{

View File

@ -207,8 +207,6 @@ public:
virtual gfx::SurfaceFormat GetFormat() const { return mFormat; }
virtual TextureClientData* DropTextureData() MOZ_OVERRIDE;
virtual bool CanExposeDrawTarget() const MOZ_OVERRIDE { return true; }
virtual TemporaryRef<gfx::DrawTarget> GetAsDrawTarget() MOZ_OVERRIDE;
@ -258,8 +256,6 @@ public:
virtual gfx::SurfaceFormat GetFormat() const { return mFormat; }
virtual TextureClientData* DropTextureData() MOZ_OVERRIDE;
virtual bool CanExposeDrawTarget() const MOZ_OVERRIDE { return true; }
virtual TemporaryRef<gfx::DrawTarget> GetAsDrawTarget() MOZ_OVERRIDE;
@ -314,8 +310,6 @@ public:
return gfx::IntSize(mDesc.Width, mDesc.Height);
}
virtual TextureClientData* DropTextureData() MOZ_OVERRIDE;
virtual bool HasInternalBuffer() const MOZ_OVERRIDE { return true; }
private:

View File

@ -18,35 +18,6 @@ namespace layers {
using namespace mozilla::gfx;
using namespace android;
class GrallocTextureClientData : public TextureClientData {
public:
GrallocTextureClientData(MaybeMagicGrallocBufferHandle aDesc)
: mGrallocHandle(aDesc)
{
MOZ_COUNT_CTOR(GrallocTextureClientData);
}
~GrallocTextureClientData()
{
MOZ_COUNT_DTOR(GrallocTextureClientData);
}
virtual void DeallocateSharedData(ISurfaceAllocator* allocator) MOZ_OVERRIDE
{
allocator->DeallocGrallocBuffer(&mGrallocHandle);
}
private:
MaybeMagicGrallocBufferHandle mGrallocHandle;
};
TextureClientData*
GrallocTextureClientOGL::DropTextureData()
{
TextureClientData* result = new GrallocTextureClientData(mGrallocHandle);
return result;
}
GrallocTextureClientOGL::GrallocTextureClientOGL(MaybeMagicGrallocBufferHandle buffer,
gfx::IntSize aSize,
gfx::BackendType aMoz2dBackend,

View File

@ -60,8 +60,6 @@ public:
virtual bool ToSurfaceDescriptor(SurfaceDescriptor& aOutDescriptor) MOZ_OVERRIDE;
virtual TextureClientData* DropTextureData() MOZ_OVERRIDE;
virtual void SetReleaseFenceHandle(FenceHandle aReleaseFenceHandle) MOZ_OVERRIDE;
virtual void WaitReleaseFence() MOZ_OVERRIDE;

View File

@ -65,30 +65,5 @@ MacIOSurfaceTextureClientOGL::GetSize() const
return gfx::IntSize(mSurface->GetDevicePixelWidth(), mSurface->GetDevicePixelHeight());
}
class MacIOSurfaceTextureClientData : public TextureClientData
{
public:
MacIOSurfaceTextureClientData(MacIOSurface* aSurface)
: mSurface(aSurface)
{}
virtual void DeallocateSharedData(ISurfaceAllocator*) MOZ_OVERRIDE
{
mSurface = nullptr;
}
private:
RefPtr<MacIOSurface> mSurface;
};
TextureClientData*
MacIOSurfaceTextureClientOGL::DropTextureData()
{
TextureClientData* data = new MacIOSurfaceTextureClientData(mSurface);
mSurface = nullptr;
MarkInvalid();
return data;
}
}
}

View File

@ -34,8 +34,6 @@ public:
virtual gfx::IntSize GetSize() const;
virtual TextureClientData* DropTextureData() MOZ_OVERRIDE;
virtual bool HasInternalBuffer() const MOZ_OVERRIDE { return false; }
protected:
@ -46,4 +44,4 @@ protected:
}
}
#endif // MOZILLA_GFX_MACIOSURFACETEXTURECLIENTOGL_H
#endif // MOZILLA_GFX_MACIOSURFACETEXTURECLIENTOGL_H

View File

@ -55,15 +55,6 @@ public:
virtual gfx::IntSize GetSize() const { return mSize; }
virtual TextureClientData* DropTextureData() MOZ_OVERRIDE
{
// XXX - right now the code paths using this are managing the shared texture
// data, although they should use a TextureClientData for this to ensure that
// the destruction sequence is race-free.
MarkInvalid();
return nullptr;
}
virtual gfx::SurfaceFormat GetFormat() const MOZ_OVERRIDE
{
return gfx::SurfaceFormat::UNKNOWN;
@ -102,8 +93,6 @@ public:
virtual bool ToSurfaceDescriptor(SurfaceDescriptor& aOutDescriptor) MOZ_OVERRIDE;
virtual TextureClientData* DropTextureData() MOZ_OVERRIDE { return nullptr; }
virtual bool HasInternalBuffer() const MOZ_OVERRIDE { return false; }
void InitWith(gfx::SurfaceStream* aStream);