Bug 893301. Add a path to RotatedContentBuffer for new textures. r=mattwoodrow

This commit is contained in:
Nicholas Cameron
2013-11-28 10:16:33 +13:00
parent aed3686436
commit 69784b8d4f
2 changed files with 58 additions and 17 deletions

View File

@@ -284,16 +284,16 @@ RotatedContentBuffer::BufferContentType()
if (mBufferProvider) {
return mBufferProvider->GetContentType();
}
if (mDTBuffer) {
switch (mDTBuffer->GetFormat()) {
case FORMAT_A8:
return GFX_CONTENT_ALPHA;
case FORMAT_B8G8R8A8:
case FORMAT_R8G8B8A8:
return GFX_CONTENT_COLOR_ALPHA;
default:
return GFX_CONTENT_COLOR;
if (mNewBufferProvider || mDTBuffer) {
SurfaceFormat format;
if (mNewBufferProvider) {
format = mNewBufferProvider->AsTextureClientDrawTarget()->GetFormat();
} else if (mDTBuffer) {
format = mDTBuffer->GetFormat();
}
return ContentForFormat(format);
}
return GFX_CONTENT_SENTINEL;
}
@@ -309,8 +309,12 @@ RotatedContentBuffer::BufferSizeOkFor(const nsIntSize& aSize)
bool
RotatedContentBuffer::EnsureBuffer()
{
if (!mDTBuffer && mBufferProvider) {
mDTBuffer = mBufferProvider->LockDrawTarget();
if (!mDTBuffer) {
if (mBufferProvider) {
mDTBuffer = mBufferProvider->LockDrawTarget();
} else if (mNewBufferProvider) {
mDTBuffer = mNewBufferProvider->AsTextureClientDrawTarget()->GetAsDrawTarget();
}
}
NS_WARN_IF_FALSE(mDTBuffer, "no buffer");
@@ -320,8 +324,13 @@ RotatedContentBuffer::EnsureBuffer()
bool
RotatedContentBuffer::EnsureBufferOnWhite()
{
if (!mDTBufferOnWhite && mBufferProviderOnWhite) {
mDTBufferOnWhite = mBufferProviderOnWhite->LockDrawTarget();
if (!mDTBufferOnWhite) {
if (mBufferProviderOnWhite) {
mDTBufferOnWhite = mBufferProviderOnWhite->LockDrawTarget();
} else if (mNewBufferProviderOnWhite) {
mDTBufferOnWhite =
mNewBufferProviderOnWhite->AsTextureClientDrawTarget()->GetAsDrawTarget();
}
}
NS_WARN_IF_FALSE(mDTBufferOnWhite, "no buffer");
@@ -331,13 +340,13 @@ RotatedContentBuffer::EnsureBufferOnWhite()
bool
RotatedContentBuffer::HaveBuffer() const
{
return mDTBuffer || mBufferProvider;
return mDTBuffer || mBufferProvider || mNewBufferProvider;
}
bool
RotatedContentBuffer::HaveBufferOnWhite() const
{
return mDTBufferOnWhite || mBufferProviderOnWhite;
return mDTBufferOnWhite || mBufferProviderOnWhite || mNewBufferProviderOnWhite;
}
static void