mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-08 10:44:56 +00:00
Bug 1251163 - Clear android surface texture before widget shutdown, r=nical
MozReview-Commit-ID: B68vVjR41OF --HG-- extra : rebase_source : 8d57f3bd941e813e02cd38b6fcfa73753e6c94c1
This commit is contained in:
parent
3627cdff1f
commit
bb4e7deeb8
@ -383,6 +383,7 @@ SurfaceTextureSource::SurfaceTextureSource(CompositorOGL* aCompositor,
|
||||
void
|
||||
SurfaceTextureSource::BindTexture(GLenum aTextureUnit, gfx::Filter aFilter)
|
||||
{
|
||||
MOZ_ASSERT(mSurfTex);
|
||||
if (!gl()) {
|
||||
NS_WARNING("Trying to bind a texture without a GLContext");
|
||||
return;
|
||||
@ -425,12 +426,20 @@ SurfaceTextureSource::gl() const
|
||||
gfx::Matrix4x4
|
||||
SurfaceTextureSource::GetTextureTransform()
|
||||
{
|
||||
MOZ_ASSERT(mSurfTex);
|
||||
|
||||
gfx::Matrix4x4 ret;
|
||||
mSurfTex->GetTransformMatrix(ret);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
void
|
||||
SurfaceTextureSource::DeallocateDeviceData()
|
||||
{
|
||||
mSurfTex = nullptr;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
|
||||
SurfaceTextureHost::SurfaceTextureHost(TextureFlags aFlags,
|
||||
@ -456,6 +465,7 @@ SurfaceTextureHost::gl() const
|
||||
bool
|
||||
SurfaceTextureHost::Lock()
|
||||
{
|
||||
MOZ_ASSERT(mSurfTex);
|
||||
if (!mCompositor) {
|
||||
return false;
|
||||
}
|
||||
@ -478,6 +488,7 @@ SurfaceTextureHost::Lock()
|
||||
void
|
||||
SurfaceTextureHost::Unlock()
|
||||
{
|
||||
MOZ_ASSERT(mSurfTex);
|
||||
mSurfTex->Detach();
|
||||
}
|
||||
|
||||
@ -499,6 +510,15 @@ SurfaceTextureHost::GetFormat() const
|
||||
return mTextureSource->GetFormat();
|
||||
}
|
||||
|
||||
void
|
||||
SurfaceTextureHost::DeallocateDeviceData()
|
||||
{
|
||||
if (mTextureSource) {
|
||||
mTextureSource->DeallocateDeviceData();
|
||||
}
|
||||
mSurfTex = nullptr;
|
||||
}
|
||||
|
||||
#endif // MOZ_WIDGET_ANDROID
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
|
@ -365,8 +365,7 @@ public:
|
||||
|
||||
virtual GLenum GetWrapMode() const override { return mWrapMode; }
|
||||
|
||||
// We don't own anything.
|
||||
virtual void DeallocateDeviceData() override {}
|
||||
virtual void DeallocateDeviceData() override;
|
||||
|
||||
virtual void SetCompositor(Compositor* aCompositor) override;
|
||||
|
||||
@ -374,7 +373,7 @@ public:
|
||||
|
||||
protected:
|
||||
RefPtr<CompositorOGL> mCompositor;
|
||||
RefPtr<gl::AndroidSurfaceTexture> const mSurfTex;
|
||||
RefPtr<gl::AndroidSurfaceTexture> mSurfTex;
|
||||
const gfx::SurfaceFormat mFormat;
|
||||
const GLenum mTextureTarget;
|
||||
const GLenum mWrapMode;
|
||||
@ -390,8 +389,7 @@ public:
|
||||
|
||||
virtual ~SurfaceTextureHost();
|
||||
|
||||
// We don't own anything.
|
||||
virtual void DeallocateDeviceData() override {}
|
||||
virtual void DeallocateDeviceData() override;
|
||||
|
||||
virtual void SetCompositor(Compositor* aCompositor) override;
|
||||
|
||||
@ -419,7 +417,7 @@ public:
|
||||
virtual const char* Name() { return "SurfaceTextureHost"; }
|
||||
|
||||
protected:
|
||||
RefPtr<gl::AndroidSurfaceTexture> const mSurfTex;
|
||||
RefPtr<gl::AndroidSurfaceTexture> mSurfTex;
|
||||
const gfx::IntSize mSize;
|
||||
RefPtr<CompositorOGL> mCompositor;
|
||||
RefPtr<SurfaceTextureSource> mTextureSource;
|
||||
|
Loading…
Reference in New Issue
Block a user