Bug 1129871 - Pass tiles by ref rather than copy part 1. r=BenWa
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user