From d26c9fa66c45b5a050580772acfbcc1b5271543e Mon Sep 17 00:00:00 2001 From: junov Date: Tue, 2 Jun 2015 11:47:45 -0700 Subject: 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 --- src/utils/SkDeferredCanvas.cpp | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src/utils') 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(); } //----------------------------------------------------------------------------- -- cgit v1.2.3