Bug 1372060 - Relax assertions when missing SurfaceTexture in compositor r=jgilbert

MozReview-Commit-ID: heJALqGBLV
This commit is contained in:
James Willcox 2017-06-16 13:00:56 -05:00
Родитель ec31e574ed
Коммит 6b5af17980
1 изменённых файлов: 10 добавлений и 5 удалений

Просмотреть файл

@ -58,8 +58,6 @@ CreateTextureHostOGL(const SurfaceDescriptor& aDesc,
const SurfaceTextureDescriptor& desc = aDesc.get_SurfaceTextureDescriptor();
java::GeckoSurfaceTexture::LocalRef surfaceTexture = java::GeckoSurfaceTexture::Lookup(desc.handle());
MOZ_RELEASE_ASSERT(surfaceTexture);
result = new SurfaceTextureHost(aFlags,
surfaceTexture,
desc.size(),
@ -419,6 +417,10 @@ SurfaceTextureHost::SurfaceTextureHost(TextureFlags aFlags,
, mSize(aSize)
, mContinuousUpdate(aContinuousUpdate)
{
if (!mSurfTex) {
return;
}
// Continuous update makes no sense with single buffer mode
MOZ_ASSERT(!mSurfTex->IsSingleBuffer() || !mContinuousUpdate);
@ -441,7 +443,7 @@ SurfaceTextureHost::PrepareTextureSource(CompositableTextureSourceRef& aTexture)
return;
}
if (!mContinuousUpdate) {
if (!mContinuousUpdate && mSurfTex) {
// UpdateTexImage() advances the internal buffer queue, so we only want to call this
// once per transactionwhen we are not in continuous mode (as we are here). Otherwise,
// the SurfaceTexture content will be de-synced from the rest of the page in subsequent
@ -459,7 +461,10 @@ SurfaceTextureHost::gl() const
bool
SurfaceTextureHost::Lock()
{
MOZ_ASSERT(mSurfTex);
if (!mSurfTex) {
return false;
}
GLContext* gl = this->gl();
if (!gl || !gl->MakeCurrent()) {
return false;
@ -503,7 +508,7 @@ SurfaceTextureHost::SetTextureSourceProvider(TextureSourceProvider* aProvider)
void
SurfaceTextureHost::NotifyNotUsed()
{
if (mSurfTex->IsSingleBuffer()) {
if (mSurfTex && mSurfTex->IsSingleBuffer()) {
mSurfTex->ReleaseTexImage();
}