Bug 1418791 - Ensure mSnapshot access is protected by mutex, r?dvander
MozReview-Commit-ID: 3NPzv6VftxZ
--- a/gfx/2d/DrawTargetD2D1.cpp
+++ b/gfx/2d/DrawTargetD2D1.cpp
@@ -41,16 +41,17 @@ StaticRefPtr<ID2D1Factory1> DrawTargetD2
RefPtr<ID2D1Factory1> D2DFactory()
{
return DrawTargetD2D1::factory();
}
DrawTargetD2D1::DrawTargetD2D1()
: mPushedLayers(1)
+ , mSnapshotLock(make_shared<Mutex>("DrawTargetD2D1::mSnapshotLock"))
, mUsedCommandListsSincePurge(0)
, mComplexBlendsWithListInList(0)
, mDeviceSeq(0)
{
}
DrawTargetD2D1::~DrawTargetD2D1()
{
@@ -86,19 +87,17 @@ DrawTargetD2D1::~DrawTargetD2D1()
iter != mDependingOnTargets.end(); iter++) {
(*iter)->mDependentTargets.erase(this);
}
}
already_AddRefed<SourceSurface>
DrawTargetD2D1::Snapshot()
{
- if (!mSnapshotLock) {
- mSnapshotLock = make_shared<Mutex>("DrawTargetD2D1::mSnapshotLock");
- }
+ MutexAutoLock lock(*mSnapshotLock);
if (mSnapshot) {
RefPtr<SourceSurface> snapshot(mSnapshot);
return snapshot.forget();
}
PopAllClips();
Flush();