Bug 1129871 - Pass tiles by ref rather than copy part 1. r=BenWa

This commit is contained in:
Nicolas Silva
2015-02-05 18:16:05 +01:00
parent c8d4e1aefd
commit a0df00d991
5 changed files with 32 additions and 41 deletions

View File

@@ -1086,7 +1086,7 @@ ClientTiledLayerBuffer::PostValidate(const nsIntRegion& aPaintRegion)
}
void
ClientTiledLayerBuffer::UnlockTile(TileClient aTile)
ClientTiledLayerBuffer::UnlockTile(TileClient& aTile)
{
// We locked the back buffer, and flipped so we now need to unlock the front
if (aTile.mFrontBuffer && aTile.mFrontBuffer->IsLocked()) {
@@ -1105,8 +1105,8 @@ ClientTiledLayerBuffer::UnlockTile(TileClient aTile)
}
}
TileClient
ClientTiledLayerBuffer::ValidateTile(TileClient aTile,
void
ClientTiledLayerBuffer::ValidateTile(TileClient& aTile,
const nsIntPoint& aTileOrigin,
const nsIntRegion& aDirtyRegion)
{
@@ -1147,27 +1147,24 @@ ClientTiledLayerBuffer::ValidateTile(TileClient aTile,
if (!backBuffer) {
NS_WARNING("Failed to allocate a tile TextureClient");
aTile.DiscardBackBuffer();
aTile.DiscardFrontBuffer();
return TileClient();
aTile.Release();
return;
}
// the back buffer may have been already locked in ValidateBackBufferFromFront
if (!backBuffer->IsLocked()) {
if (!backBuffer->Lock(OpenMode::OPEN_READ_WRITE)) {
NS_WARNING("Failed to lock a tile TextureClient");
aTile.DiscardBackBuffer();
aTile.DiscardFrontBuffer();
return TileClient();
aTile.Release();
return;
}
}
if (backBufferOnWhite && !backBufferOnWhite->IsLocked()) {
if (!backBufferOnWhite->Lock(OpenMode::OPEN_READ_WRITE)) {
NS_WARNING("Failed to lock tile TextureClient for updating.");
aTile.DiscardBackBuffer();
aTile.DiscardFrontBuffer();
return TileClient();
aTile.Release();
return;
}
}
@@ -1177,15 +1174,13 @@ ClientTiledLayerBuffer::ValidateTile(TileClient aTile,
if (createdTextureClient) {
if (!mCompositableClient->AddTextureClient(backBuffer)) {
NS_WARNING("Failed to add tile TextureClient.");
aTile.DiscardFrontBuffer();
aTile.DiscardBackBuffer();
return aTile;
aTile.Release();
return;
}
if (backBufferOnWhite && !mCompositableClient->AddTextureClient(backBufferOnWhite)) {
NS_WARNING("Failed to add tile TextureClient.");
aTile.DiscardFrontBuffer();
aTile.DiscardBackBuffer();
return aTile;
aTile.Release();
return;
}
}
@@ -1201,9 +1196,9 @@ ClientTiledLayerBuffer::ValidateTile(TileClient aTile,
}
moz2DTile.mTileOrigin = gfx::IntPoint(aTileOrigin.x, aTileOrigin.y);
if (!dt || (backBufferOnWhite && !dtOnWhite)) {
aTile.DiscardFrontBuffer();
aTile.DiscardBackBuffer();
return aTile;
NS_WARNING("Failed to get a DrawTarget from a tile");
aTile.Release();
return;
}
mMoz2DTiles.push_back(moz2DTile);
@@ -1236,7 +1231,7 @@ ClientTiledLayerBuffer::ValidateTile(TileClient aTile,
aTile.Flip();
return aTile;
return;
}
// Single paint buffer case:
@@ -1299,9 +1294,8 @@ ClientTiledLayerBuffer::ValidateTile(TileClient aTile,
if (createdTextureClient) {
if (!mCompositableClient->AddTextureClient(backBuffer)) {
NS_WARNING("Failed to add tile TextureClient.");
aTile.DiscardFrontBuffer();
aTile.DiscardBackBuffer();
return aTile;
aTile.Release();
return;
}
}
@@ -1315,8 +1309,6 @@ ClientTiledLayerBuffer::ValidateTile(TileClient aTile,
// TextureClient around unnecessarily, so discard the back-buffer.
aTile.DiscardBackBuffer();
}
return aTile;
}
/**