diff options
| author | Romain Guy <romainguy@google.com> | 2011-01-14 18:51:01 -0800 |
|---|---|---|
| committer | Romain Guy <romainguy@google.com> | 2011-01-14 18:51:01 -0800 |
| commit | 43ccf4663c822ddd435b7683cc05221f6169c6c3 (patch) | |
| tree | d6255b5202bc62a44249fbf3905bbec98605d39d /libs/hwui/DisplayListRenderer.cpp | |
| parent | 8dd5b1e53184ed3b786dd329e12d665ae59ca3f4 (diff) | |
| download | frameworks_base-43ccf4663c822ddd435b7683cc05221f6169c6c3.zip frameworks_base-43ccf4663c822ddd435b7683cc05221f6169c6c3.tar.gz frameworks_base-43ccf4663c822ddd435b7683cc05221f6169c6c3.tar.bz2 | |
Don't crash Launcher on config change.
Change-Id: Ibbbd7146c5ff69e9639b433f39041053654d808c
Diffstat (limited to 'libs/hwui/DisplayListRenderer.cpp')
| -rw-r--r-- | libs/hwui/DisplayListRenderer.cpp | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/libs/hwui/DisplayListRenderer.cpp b/libs/hwui/DisplayListRenderer.cpp index 747543f..e3593da 100644 --- a/libs/hwui/DisplayListRenderer.cpp +++ b/libs/hwui/DisplayListRenderer.cpp @@ -129,7 +129,7 @@ DisplayList::~DisplayList() { mBitmapResources.clear(); for (size_t i = 0; i < mShaders.size(); i++) { - delete mShaders.itemAt(i); + caches.resourceCache.decrementRefcount(mShaders.itemAt(i)); } mShaders.clear(); @@ -181,7 +181,9 @@ void DisplayList::initFromDisplayListRenderer(const DisplayListRenderer& recorde const Vector<SkiaShader*> &shaders = recorder.getShaders(); for (size_t i = 0; i < shaders.size(); i++) { - mShaders.add(shaders.itemAt(i)); + SkiaShader* shader = shaders.itemAt(i); + mShaders.add(shader); + caches.resourceCache.incrementRefcount(shader); } const Vector<SkPaint*> &paints = recorder.getPaints(); @@ -405,10 +407,14 @@ void DisplayListRenderer::reset() { } mBitmapResources.clear(); - mPaints.clear(); - mPaintMap.clear(); + for (size_t i = 0; i < mShaders.size(); i++) { + caches.resourceCache.decrementRefcount(mShaders.itemAt(i)); + } mShaders.clear(); mShaderMap.clear(); + + mPaints.clear(); + mPaintMap.clear(); mMatrices.clear(); } |
