summaryrefslogtreecommitdiffstats
path: root/libs/hwui/DisplayListRenderer.cpp
diff options
context:
space:
mode:
authorRomain Guy <romainguy@google.com>2011-01-14 18:51:01 -0800
committerRomain Guy <romainguy@google.com>2011-01-14 18:51:01 -0800
commit43ccf4663c822ddd435b7683cc05221f6169c6c3 (patch)
treed6255b5202bc62a44249fbf3905bbec98605d39d /libs/hwui/DisplayListRenderer.cpp
parent8dd5b1e53184ed3b786dd329e12d665ae59ca3f4 (diff)
downloadframeworks_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.cpp14
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();
}