Bug 952507 - Fix locking in double buffered ContentClient. r=nrc

This commit is contained in:
Nicolas Silva
2014-01-24 15:25:04 +01:00
parent cf62fd80df
commit 33945ba0f6
12 changed files with 112 additions and 3 deletions

View File

@@ -60,6 +60,24 @@ SharedTextureClientOGL::InitWith(gl::SharedTextureHandle aHandle,
}
}
bool
SharedTextureClientOGL::Lock(OpenMode mode)
{
MOZ_ASSERT(!mIsLocked);
if (!IsValid() || !IsAllocated()) {
return false;
}
mIsLocked = true;
return true;
}
void
SharedTextureClientOGL::Unlock()
{
MOZ_ASSERT(mIsLocked);
mIsLocked = false;
}
bool
SharedTextureClientOGL::IsAllocated() const
{
@@ -69,6 +87,7 @@ SharedTextureClientOGL::IsAllocated() const
StreamTextureClientOGL::StreamTextureClientOGL(TextureFlags aFlags)
: TextureClient(aFlags)
, mStream(0)
, mIsLocked(false)
{
}
@@ -77,6 +96,24 @@ StreamTextureClientOGL::~StreamTextureClientOGL()
// the data is owned externally.
}
bool
StreamTextureClientOGL::Lock(OpenMode mode)
{
MOZ_ASSERT(!mIsLocked);
if (!IsValid() || !IsAllocated()) {
return false;
}
mIsLocked = true;
return true;
}
void
StreamTextureClientOGL::Unlock()
{
MOZ_ASSERT(mIsLocked);
mIsLocked = false;
}
bool
StreamTextureClientOGL::ToSurfaceDescriptor(SurfaceDescriptor& aOutDescriptor)
{