author | Milan Sreckovic <milan@mozilla.com> |
Wed, 20 May 2015 14:14:49 -0400 | |
changeset 245893 | ccc7ee0450635ee21ccf76feac0cdb82b6f44a32 |
parent 245892 | 434bb2c9dad638959884d9c8c8deb527bebc8b6a |
child 245894 | 20da4771e9139560bde452927745dfcc6f3a01c9 |
push id | 28819 |
push user | ryanvm@gmail.com |
push date | Thu, 28 May 2015 14:08:10 +0000 |
treeherder | mozilla-central@6bf6fe1c6516 [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | bschouten |
bugs | 1166082 |
milestone | 41.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
gfx/layers/d3d9/CompositorD3D9.cpp | file | annotate | diff | comparison | revisions | |
gfx/layers/d3d9/TextureD3D9.cpp | file | annotate | diff | comparison | revisions |
--- a/gfx/layers/d3d9/CompositorD3D9.cpp +++ b/gfx/layers/d3d9/CompositorD3D9.cpp @@ -741,17 +741,21 @@ CompositorD3D9::PaintToTarget() device()->CreateOffscreenPlainSurface(desc.Width, desc.Height, D3DFMT_A8R8G8B8, D3DPOOL_SYSTEMMEM, getter_AddRefs(destSurf), nullptr); device()->GetRenderTargetData(backBuff, destSurf); D3DLOCKED_RECT rect; - destSurf->LockRect(&rect, nullptr, D3DLOCK_READONLY); + HRESULT hr = destSurf->LockRect(&rect, nullptr, D3DLOCK_READONLY); + if (FAILED(hr) || !rect.pBits) { + gfxCriticalError() << "Failed to lock rect in paint to target D3D9 " << hexa(hr); + return; + } RefPtr<DataSourceSurface> sourceSurface = Factory::CreateWrappingDataSourceSurface((uint8_t*)rect.pBits, rect.Pitch, IntSize(desc.Width, desc.Height), SurfaceFormat::B8G8R8A8); mTarget->CopySurface(sourceSurface, IntRect(0, 0, desc.Width, desc.Height), IntPoint(-mTargetBounds.x, -mTargetBounds.y));
--- a/gfx/layers/d3d9/TextureD3D9.cpp +++ b/gfx/layers/d3d9/TextureD3D9.cpp @@ -187,19 +187,20 @@ TextureSourceD3D9::InitTextures(DeviceMa RefPtr<IDirect3DTexture9> tmpTexture = aDeviceManager->CreateTexture(aSize, aFormat, D3DPOOL_SYSTEMMEM, this); if (!tmpTexture) { return nullptr; } tmpTexture->GetSurfaceLevel(0, byRef(aSurface)); - aSurface->LockRect(&aLockedRect, nullptr, 0); - if (!aLockedRect.pBits) { - NS_WARNING("Could not lock surface"); + + HRESULT hr = aSurface->LockRect(&aLockedRect, nullptr, 0); + if (FAILED(hr) || !aLockedRect.pBits) { + gfxCriticalError() << "Failed to lock rect initialize texture in D3D9 " << hexa(hr); return nullptr; } return result.forget(); } /** * Helper method for DataToTexture and SurfaceToTexture. @@ -702,17 +703,21 @@ CairoTextureClientD3D9::BorrowDrawTarget mSurface = nullptr; return nullptr; } } else { // gfxWindowsSurface don't support transparency so we can't use the d3d9 // windows surface optimization. // Instead we have to use a gfxImageSurface and fallback for font drawing. D3DLOCKED_RECT rect; - mD3D9Surface->LockRect(&rect, nullptr, 0); + HRESULT hr = mD3D9Surface->LockRect(&rect, nullptr, 0); + if (FAILED(hr) || !rect.pBits) { + gfxCriticalError() << "Failed to lock rect borrowing the target in D3D9 " << hexa(hr); + return nullptr; + } mSurface = new gfxImageSurface((uint8_t*)rect.pBits, mSize, rect.Pitch, SurfaceFormatToImageFormat(mFormat)); mLockRect = true; } mDrawTarget = gfxPlatform::GetPlatform()->CreateDrawTargetForSurface(mSurface, mSize);