Bug 703463 - Let SourceSurfaceSkia snapshots take ownership of DrawTargetSkia pixel data when it is destroyed. r=jrmuizel

This commit is contained in:
Matt Woodrow 2011-11-18 17:00:38 +13:00
Родитель 823bce8cd1
Коммит 1fe8fa86c4
3 изменённых файлов: 15 добавлений и 2 удалений

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

@ -171,7 +171,14 @@ DrawTargetSkia::DrawTargetSkia()
DrawTargetSkia::~DrawTargetSkia() DrawTargetSkia::~DrawTargetSkia()
{ {
MarkChanged(); if (mSnapshots.size()) {
for (std::vector<SourceSurfaceSkia*>::iterator iter = mSnapshots.begin();
iter != mSnapshots.end(); iter++) {
(*iter)->DrawTargetDestroyed();
}
// All snapshots will now have copied data.
mSnapshots.clear();
}
} }
TemporaryRef<SourceSurface> TemporaryRef<SourceSurface>

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

@ -129,6 +129,12 @@ SourceSurfaceSkia::DrawTargetWillChange()
} }
} }
void
SourceSurfaceSkia::DrawTargetDestroyed()
{
mDrawTarget = NULL;
}
void void
SourceSurfaceSkia::MarkIndependent() SourceSurfaceSkia::MarkIndependent()
{ {
@ -138,6 +144,5 @@ SourceSurfaceSkia::MarkIndependent()
} }
} }
} }
} }

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

@ -82,6 +82,7 @@ private:
friend class DrawTargetSkia; friend class DrawTargetSkia;
void DrawTargetWillChange(); void DrawTargetWillChange();
void DrawTargetDestroyed();
void MarkIndependent(); void MarkIndependent();
SkBitmap mBitmap; SkBitmap mBitmap;