Bug 862106. Use Create*Client directly. r=nical

--HG--
extra : rebase_source : d903db2fcb68bbccff9548dfbcd215d9a25ba41c
This commit is contained in:
Nicholas Cameron 2013-04-17 09:36:06 +12:00
parent 9e65d656fc
commit 30a1afa9de
12 changed files with 24 additions and 68 deletions

View File

@ -295,7 +295,8 @@ BasicShadowableCanvasLayer::Paint(gfxContext* aContext, Layer* aMaskLayer)
if (mNeedsYFlip) { if (mNeedsYFlip) {
flags |= NeedsYFlip; flags |= NeedsYFlip;
} }
mCanvasClient = BasicManager()->CreateCanvasClientFor(GetCompositableClientType(), this, flags); mCanvasClient = CanvasClient::CreateCanvasClient(GetCompositableClientType(),
BasicManager(), flags);
if (!mCanvasClient) { if (!mCanvasClient) {
return; return;
} }

View File

@ -258,10 +258,15 @@ BasicShadowableImageLayer::Paint(gfxContext* aContext, Layer* aMaskLayer)
if (!mImageClient || if (!mImageClient ||
!mImageClient->UpdateImage(mContainer, GetContentFlags())) { !mImageClient->UpdateImage(mContainer, GetContentFlags())) {
mImageClient = BasicManager()->CreateImageClientFor(GetImageClientType(), this, mImageClient = ImageClient::CreateImageClient(GetImageClientType(),
mForceSingleTile BasicManager(),
? ForceSingleTile mForceSingleTile
: 0); ? ForceSingleTile
: 0);
if (GetImageClientType() == BUFFER_BRIDGE) {
static_cast<ImageClientBridge*>(mImageClient.get())->SetLayer(this);
}
if (!mImageClient) { if (!mImageClient) {
return; return;
} }

View File

@ -254,7 +254,7 @@ BasicShadowableThebesLayer::PaintThebes(gfxContext* aContext,
} }
if (!mContentClient) { if (!mContentClient) {
mContentClient = BasicManager()->CreateContentClientFor(this); mContentClient = ContentClient::CreateContentClient(BasicManager());
if (!mContentClient) { if (!mContentClient) {
return; return;
} }

View File

@ -18,8 +18,7 @@ namespace mozilla {
namespace layers { namespace layers {
/* static */ TemporaryRef<CanvasClient> /* static */ TemporaryRef<CanvasClient>
CanvasClient::CreateCanvasClient(LayersBackend aParentBackend, CanvasClient::CreateCanvasClient(CompositableType aCompositableHostType,
CompositableType aCompositableHostType,
CompositableForwarder* aForwarder, CompositableForwarder* aForwarder,
TextureFlags aFlags) TextureFlags aFlags)
{ {
@ -27,7 +26,7 @@ CanvasClient::CreateCanvasClient(LayersBackend aParentBackend,
return new CanvasClient2D(aForwarder, aFlags); return new CanvasClient2D(aForwarder, aFlags);
} }
if (aCompositableHostType == BUFFER_IMAGE_BUFFERED) { if (aCompositableHostType == BUFFER_IMAGE_BUFFERED) {
if (aParentBackend == LAYERS_OPENGL) { if (aForwarder->GetCompositorBackendType() == LAYERS_OPENGL) {
return new CanvasClientWebGL(aForwarder, aFlags); return new CanvasClientWebGL(aForwarder, aFlags);
} }
return new CanvasClient2D(aForwarder, aFlags); return new CanvasClient2D(aForwarder, aFlags);

View File

@ -26,8 +26,7 @@ public:
* message will be sent to the compositor to create a corresponding image * message will be sent to the compositor to create a corresponding image
* host. * host.
*/ */
static TemporaryRef<CanvasClient> CreateCanvasClient(LayersBackend aBackendType, static TemporaryRef<CanvasClient> CreateCanvasClient(CompositableType aImageHostType,
CompositableType aImageHostType,
CompositableForwarder* aFwd, CompositableForwarder* aFwd,
TextureFlags aFlags); TextureFlags aFlags);

View File

@ -17,10 +17,9 @@ using namespace gfx;
namespace layers { namespace layers {
/* static */ TemporaryRef<ContentClient> /* static */ TemporaryRef<ContentClient>
ContentClient::CreateContentClient(LayersBackend aParentBackend, ContentClient::CreateContentClient(CompositableForwarder* aForwarder)
CompositableForwarder* aForwarder)
{ {
if (aParentBackend != LAYERS_OPENGL) { if (aForwarder->GetCompositorBackendType() != LAYERS_OPENGL) {
return nullptr; return nullptr;
} }
if (ShadowLayerManager::SupportsDirectTexturing() || if (ShadowLayerManager::SupportsDirectTexturing() ||

View File

@ -64,8 +64,7 @@ public:
* message will be sent to the compositor to create a corresponding content * message will be sent to the compositor to create a corresponding content
* host. * host.
*/ */
static TemporaryRef<ContentClient> CreateContentClient(LayersBackend aBackendType, static TemporaryRef<ContentClient> CreateContentClient(CompositableForwarder* aFwd);
CompositableForwarder* aFwd);
ContentClient(CompositableForwarder* aForwarder) ContentClient(CompositableForwarder* aForwarder)
: CompositableClient(aForwarder) : CompositableClient(aForwarder)

View File

@ -21,25 +21,24 @@ namespace mozilla {
namespace layers { namespace layers {
/* static */ TemporaryRef<ImageClient> /* static */ TemporaryRef<ImageClient>
ImageClient::CreateImageClient(LayersBackend aParentBackend, ImageClient::CreateImageClient(CompositableType aCompositableHostType,
CompositableType aCompositableHostType,
CompositableForwarder* aForwarder, CompositableForwarder* aForwarder,
TextureFlags aFlags) TextureFlags aFlags)
{ {
RefPtr<ImageClient> result = nullptr; RefPtr<ImageClient> result = nullptr;
switch (aCompositableHostType) { switch (aCompositableHostType) {
case BUFFER_IMAGE_SINGLE: case BUFFER_IMAGE_SINGLE:
if (aParentBackend == LAYERS_OPENGL) { if (aForwarder->GetCompositorBackendType() == LAYERS_OPENGL) {
result = new ImageClientSingle(aForwarder, aFlags, BUFFER_IMAGE_SINGLE); result = new ImageClientSingle(aForwarder, aFlags, BUFFER_IMAGE_SINGLE);
} }
break; break;
case BUFFER_IMAGE_BUFFERED: case BUFFER_IMAGE_BUFFERED:
if (aParentBackend == LAYERS_OPENGL) { if (aForwarder->GetCompositorBackendType() == LAYERS_OPENGL) {
result = new ImageClientSingle(aForwarder, aFlags, BUFFER_IMAGE_BUFFERED); result = new ImageClientSingle(aForwarder, aFlags, BUFFER_IMAGE_BUFFERED);
} }
break; break;
case BUFFER_BRIDGE: case BUFFER_BRIDGE:
if (aParentBackend == LAYERS_OPENGL) { if (aForwarder->GetCompositorBackendType() == LAYERS_OPENGL) {
result = new ImageClientBridge(aForwarder, aFlags); result = new ImageClientBridge(aForwarder, aFlags);
} }
break; break;

View File

@ -31,8 +31,7 @@ public:
* message will be sent to the compositor to create a corresponding image * message will be sent to the compositor to create a corresponding image
* host. * host.
*/ */
static TemporaryRef<ImageClient> CreateImageClient(LayersBackend aBackendType, static TemporaryRef<ImageClient> CreateImageClient(CompositableType aImageHostType,
CompositableType aImageHostType,
CompositableForwarder* aFwd, CompositableForwarder* aFwd,
TextureFlags aFlags); TextureFlags aFlags);

View File

@ -485,7 +485,7 @@ ImageBridgeChild::CreateImageClientNow(CompositableType aType)
mCompositorBackend = LAYERS_OPENGL; mCompositorBackend = LAYERS_OPENGL;
RefPtr<ImageClient> client RefPtr<ImageClient> client
= ImageClient::CreateImageClient(mCompositorBackend, aType, this, 0); = ImageClient::CreateImageClient(aType, this, 0);
MOZ_ASSERT(client, "failed to create ImageClient"); MOZ_ASSERT(client, "failed to create ImageClient");
if (client) { if (client) {
client->Connect(); client->Connect();

View File

@ -532,39 +532,6 @@ ShadowLayerForwarder::CloseDescriptor(const SurfaceDescriptor& aDescriptor)
// There's no "close" needed for Shmem surfaces. // There's no "close" needed for Shmem surfaces.
} }
TemporaryRef<ImageClient>
ShadowLayerForwarder::CreateImageClientFor(const CompositableType& aCompositableType,
ShadowableLayer* aLayer,
TextureFlags aFlags)
{
RefPtr<ImageClient> client = ImageClient::CreateImageClient(GetCompositorBackendType(),
aCompositableType,
this, aFlags);
if (aCompositableType == BUFFER_BRIDGE) {
static_cast<ImageClientBridge*>(client.get())->SetLayer(aLayer);
}
return client.forget();
}
TemporaryRef<CanvasClient>
ShadowLayerForwarder::CreateCanvasClientFor(const CompositableType& aCompositableType,
ShadowableLayer* aLayer,
TextureFlags aFlags)
{
RefPtr<CanvasClient> client = CanvasClient::CreateCanvasClient(GetCompositorBackendType(),
aCompositableType,
this, aFlags);
return client.forget();
}
TemporaryRef<ContentClient>
ShadowLayerForwarder::CreateContentClientFor(ShadowableLayer* aLayer)
{
RefPtr<ContentClient> client = ContentClient::CreateContentClient(GetCompositorBackendType(),
this);
return client.forget();
}
PLayerChild* PLayerChild*
ShadowLayerForwarder::ConstructShadowFor(ShadowableLayer* aLayer) ShadowLayerForwarder::ConstructShadowFor(ShadowableLayer* aLayer)
{ {

View File

@ -363,17 +363,6 @@ public:
*/ */
void SetIsFirstPaint() { mIsFirstPaint = true; } void SetIsFirstPaint() { mIsFirstPaint = true; }
/**
* Create compositable clients, see comments in CompositingFactory
*/
TemporaryRef<ImageClient> CreateImageClientFor(const CompositableType& aCompositableType,
ShadowableLayer* aLayer,
TextureFlags aFlags);
TemporaryRef<CanvasClient> CreateCanvasClientFor(const CompositableType& aCompositableType,
ShadowableLayer* aLayer,
TextureFlags aFlags);
TemporaryRef<ContentClient> CreateContentClientFor(ShadowableLayer* aLayer);
static void PlatformSyncBeforeUpdate(); static void PlatformSyncBeforeUpdate();
static already_AddRefed<gfxASurface> static already_AddRefed<gfxASurface>