aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/utils
diff options
context:
space:
mode:
authorGravatar junov <junov@chromium.org>2015-06-02 11:47:45 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2015-06-02 11:47:45 -0700
commitd26c9fa66c45b5a050580772acfbcc1b5271543e (patch)
tree8704bc7f574c6300f57819e21613856c1bc75396 /src/utils
parenta66cc7e1e01bab8590fdcfafb269e21bfe8782fa (diff)
Fixing leaky handling of SkImage in SkDeferredCanvas.
Long lived SkImageHeap objects currently accumulate refs indefinitely. This leads to massive memory leaks in the gpu-accelerated 2D canvas code path. This CL does not implement a general fix for SkGPipe, but it resolves the leak in SkDeferredCanvas (currently the only user of SkGPipe) by resetting the image heap when the deferral queue is flushed. This change also fixes the accounting of bytes allocated by referenced images in order to trigger flushing heuristics appropriately. BUG=crbug.com/494148 Review URL: https://codereview.chromium.org/1145893007
Diffstat (limited to 'src/utils')
-rw-r--r--src/utils/SkDeferredCanvas.cpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/utils/SkDeferredCanvas.cpp b/src/utils/SkDeferredCanvas.cpp
index 40004fbddb..b07a94a52f 100644
--- a/src/utils/SkDeferredCanvas.cpp
+++ b/src/utils/SkDeferredCanvas.cpp
@@ -151,6 +151,8 @@ void DeferredPipeController::playback(bool silent) {
// Release all allocated blocks
fAllocator.reset();
+
+ this->purgeCaches();
}
//-----------------------------------------------------------------------------