diff options
author | reed <reed@google.com> | 2015-09-24 00:21:20 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-09-24 00:21:20 -0700 |
commit | dd42e5c05ce2f5e6da9a055544849dd8ae4e6733 (patch) | |
tree | 2c39bb67b7a22a3d2c38bcb5fff48533295e4551 | |
parent | ef2e4ac2347d8d6f1db5960388597b97ae73378b (diff) |
Revert "Revert of remove unused SkCachingPixelRef (patchset #1 id:1 of https://codereview.chromium.org/1364743002/ )"
removed test for unsupported SkInstallDiscardable...
This reverts commit 60c73d51808b9d78f65381b83f628a3f523042fe.
BUG=skia:
TBR=
Review URL: https://codereview.chromium.org/1369443002
-rw-r--r-- | gyp/core.gypi | 4 | ||||
-rw-r--r-- | src/lazy/SkCachingPixelRef.cpp | 74 | ||||
-rw-r--r-- | src/lazy/SkCachingPixelRef.h | 67 | ||||
-rw-r--r-- | tests/CachedDecodingPixelRefTest.cpp | 61 |
4 files changed, 9 insertions, 197 deletions
diff --git a/gyp/core.gypi b/gyp/core.gypi index 710a8e4378..9e9727c66d 100644 --- a/gyp/core.gypi +++ b/gyp/core.gypi @@ -343,10 +343,6 @@ '<(skia_include_path)/core/SkXfermode.h', '<(skia_include_path)/private/SkTemplates.h', - # Lazy decoding: - '<(skia_src_path)/lazy/SkCachingPixelRef.cpp', - '<(skia_src_path)/lazy/SkCachingPixelRef.h', - # Path ops '<(skia_include_path)/pathops/SkPathOps.h', diff --git a/src/lazy/SkCachingPixelRef.cpp b/src/lazy/SkCachingPixelRef.cpp deleted file mode 100644 index 692e4ea3d6..0000000000 --- a/src/lazy/SkCachingPixelRef.cpp +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Copyright 2013 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#include "SkCachingPixelRef.h" -#include "SkBitmapCache.h" -#include "SkRect.h" - -bool SkCachingPixelRef::Install(SkImageGenerator* generator, - SkBitmap* dst) { - SkASSERT(dst != nullptr); - if (nullptr == generator) { - return false; - } - const SkImageInfo info = generator->getInfo(); - if (!dst->setInfo(info)) { - delete generator; - return false; - } - SkAutoTUnref<SkCachingPixelRef> ref(new SkCachingPixelRef(info, generator, dst->rowBytes())); - dst->setPixelRef(ref); - return true; -} - -SkCachingPixelRef::SkCachingPixelRef(const SkImageInfo& info, - SkImageGenerator* generator, - size_t rowBytes) - : INHERITED(info) - , fImageGenerator(generator) - , fErrorInDecoding(false) - , fRowBytes(rowBytes) { - SkASSERT(fImageGenerator != nullptr); -} -SkCachingPixelRef::~SkCachingPixelRef() { - delete fImageGenerator; - // Assert always unlock before unref. -} - -bool SkCachingPixelRef::onNewLockPixels(LockRec* rec) { - if (fErrorInDecoding) { - return false; // don't try again. - } - - const SkImageInfo& info = this->info(); - if (!SkBitmapCache::Find( - this->getGenerationID(), info.bounds(), &fLockedBitmap)) { - // Cache has been purged, must re-decode. - if (!fLockedBitmap.tryAllocPixels(info, fRowBytes)) { - fErrorInDecoding = true; - return false; - } - if (!fImageGenerator->getPixels(info, fLockedBitmap.getPixels(), fRowBytes)) { - fErrorInDecoding = true; - return false; - } - fLockedBitmap.setImmutable(); - SkBitmapCache::Add(this, info.bounds(), fLockedBitmap); - } - - // Now bitmap should contain a concrete PixelRef of the decoded image. - void* pixels = fLockedBitmap.getPixels(); - SkASSERT(pixels != nullptr); - rec->fPixels = pixels; - rec->fColorTable = nullptr; - rec->fRowBytes = fLockedBitmap.rowBytes(); - return true; -} - -void SkCachingPixelRef::onUnlockPixels() { - fLockedBitmap.reset(); -} diff --git a/src/lazy/SkCachingPixelRef.h b/src/lazy/SkCachingPixelRef.h deleted file mode 100644 index 1057441d5e..0000000000 --- a/src/lazy/SkCachingPixelRef.h +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright 2013 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#ifndef SkCachingPixelRef_DEFINED -#define SkCachingPixelRef_DEFINED - -#include "SkBitmapCache.h" -#include "SkImageInfo.h" -#include "SkImageGenerator.h" -#include "SkPixelRef.h" - -class SkColorTable; - -/** - * PixelRef which defers decoding until SkBitmap::lockPixels() is - * called. Caches the decoded images in the global - * SkScaledImageCache. When the pixels are unlocked, this cache may - * or be destroyed before the next lock. If so, onLockPixels will - * attempt to re-decode. - * - * Decoding is handled by the SkImageGenerator - */ -class SkCachingPixelRef : public SkPixelRef { -public: - - /** - * Takes ownership of SkImageGenerator. If this method fails for - * whatever reason, it will return false and immediatetely delete - * the generator. If it succeeds, it will modify destination - * bitmap. - * - * If Install fails or when the SkCachingPixelRef that is - * installed into destination is destroyed, it will call - * `delete` on the generator. Therefore, generator should be - * allocated with `new`. - */ - static bool Install(SkImageGenerator* gen, SkBitmap* dst); - -protected: - virtual ~SkCachingPixelRef(); - bool onNewLockPixels(LockRec*) override; - void onUnlockPixels() override; - bool onLockPixelsAreWritable() const override { return false; } - - SkData* onRefEncodedData() override { - return fImageGenerator->refEncodedData(); - } - - bool onIsLazyGenerated() const override { return true; } - -private: - SkImageGenerator* const fImageGenerator; - bool fErrorInDecoding; - const size_t fRowBytes; - - SkBitmap fLockedBitmap; - - SkCachingPixelRef(const SkImageInfo&, SkImageGenerator*, size_t rowBytes); - - typedef SkPixelRef INHERITED; -}; - -#endif // SkCachingPixelRef_DEFINED diff --git a/tests/CachedDecodingPixelRefTest.cpp b/tests/CachedDecodingPixelRefTest.cpp index b58880b10d..136b2f584a 100644 --- a/tests/CachedDecodingPixelRefTest.cpp +++ b/tests/CachedDecodingPixelRefTest.cpp @@ -6,7 +6,6 @@ */ #include "SkBitmap.h" -#include "SkCachingPixelRef.h" #include "SkCanvas.h" #include "SkData.h" #include "SkDiscardableMemoryPool.h" @@ -141,9 +140,6 @@ static void test_three_encodings(skiatest::Reporter* reporter, } //////////////////////////////////////////////////////////////////////////////// -static bool install_skCachingPixelRef(SkData* encoded, SkBitmap* dst) { - return SkCachingPixelRef::Install(SkImageGenerator::NewFromEncoded(encoded), dst); -} static bool install_skDiscardablePixelRef(SkData* encoded, SkBitmap* dst) { // Use system-default discardable memory. return SkInstallDiscardablePixelRef(encoded, dst); @@ -151,12 +147,10 @@ static bool install_skDiscardablePixelRef(SkData* encoded, SkBitmap* dst) { //////////////////////////////////////////////////////////////////////////////// /** - * This checks to see that a SkCachingPixelRef and a - * SkDiscardablePixelRef works as advertised with a + * This checks to see that SkDiscardablePixelRef works as advertised with a * SkDecodingImageGenerator. */ DEF_TEST(DecodingImageGenerator, reporter) { - test_three_encodings(reporter, install_skCachingPixelRef); test_three_encodings(reporter, install_skDiscardablePixelRef); } @@ -228,27 +222,14 @@ static void check_test_image_generator_bitmap(skiatest::Reporter* reporter, REPORTER_ASSERT(reporter, 0 == errors); } -enum PixelRefType { - kSkCaching_PixelRefType, - kSkDiscardable_PixelRefType, - kLast_PixelRefType = kSkDiscardable_PixelRefType -}; - static void check_pixelref(TestImageGenerator::TestType type, skiatest::Reporter* reporter, - PixelRefType pixelRefType, SkDiscardableMemory::Factory* factory) { - SkASSERT((pixelRefType >= 0) && (pixelRefType <= kLast_PixelRefType)); SkAutoTDelete<SkImageGenerator> gen(new TestImageGenerator(type, reporter)); REPORTER_ASSERT(reporter, gen.get() != nullptr); SkBitmap lazy; - bool success; - if (kSkCaching_PixelRefType == pixelRefType) { - // Ignore factory; use global cache. - success = SkCachingPixelRef::Install(gen.detach(), &lazy); - } else { - success = SkInstallDiscardablePixelRef(gen.detach(), nullptr, &lazy, factory); - } + bool success = SkInstallDiscardablePixelRef(gen.detach(), nullptr, &lazy, factory); + REPORTER_ASSERT(reporter, success); if (TestImageGenerator::kSucceedGetPixels_TestType == type) { check_test_image_generator_bitmap(reporter, lazy); @@ -258,53 +239,29 @@ static void check_pixelref(TestImageGenerator::TestType type, } } -// new/lock/delete is an odd pattern for a pixelref, but it needs to not assert -static void test_newlockdelete(skiatest::Reporter* reporter) { -#ifdef SK_SUPPORT_LEGACY_UNBALANCED_PIXELREF_LOCKCOUNT - SkBitmap bm; - SkImageGenerator* ig = new TestImageGenerator( - TestImageGenerator::kSucceedGetPixels_TestType, reporter); - SkInstallDiscardablePixelRef(ig, &bm); - bm.pixelRef()->lockPixels(); -#endif -} - /** * This tests the basic functionality of SkDiscardablePixelRef with a * basic SkImageGenerator implementation and several * SkDiscardableMemory::Factory choices. */ DEF_TEST(DiscardableAndCachingPixelRef, reporter) { - test_newlockdelete(reporter); - - check_pixelref(TestImageGenerator::kFailGetPixels_TestType, - reporter, kSkCaching_PixelRefType, nullptr); - check_pixelref(TestImageGenerator::kSucceedGetPixels_TestType, - reporter, kSkCaching_PixelRefType, nullptr); - - check_pixelref(TestImageGenerator::kFailGetPixels_TestType, - reporter, kSkDiscardable_PixelRefType, nullptr); - check_pixelref(TestImageGenerator::kSucceedGetPixels_TestType, - reporter, kSkDiscardable_PixelRefType, nullptr); + check_pixelref(TestImageGenerator::kFailGetPixels_TestType, reporter, nullptr); + check_pixelref(TestImageGenerator::kSucceedGetPixels_TestType, reporter, nullptr); SkAutoTUnref<SkDiscardableMemoryPool> pool( SkDiscardableMemoryPool::Create(1, nullptr)); REPORTER_ASSERT(reporter, 0 == pool->getRAMUsed()); - check_pixelref(TestImageGenerator::kFailGetPixels_TestType, - reporter, kSkDiscardable_PixelRefType, pool); + check_pixelref(TestImageGenerator::kFailGetPixels_TestType, reporter, pool); REPORTER_ASSERT(reporter, 0 == pool->getRAMUsed()); - check_pixelref(TestImageGenerator::kSucceedGetPixels_TestType, - reporter, kSkDiscardable_PixelRefType, pool); + check_pixelref(TestImageGenerator::kSucceedGetPixels_TestType, reporter, pool); REPORTER_ASSERT(reporter, 0 == pool->getRAMUsed()); SkDiscardableMemoryPool* globalPool = SkGetGlobalDiscardableMemoryPool(); // Only acts differently from nullptr on a platform that has a // default discardable memory implementation that differs from the // global DM pool. - check_pixelref(TestImageGenerator::kFailGetPixels_TestType, - reporter, kSkDiscardable_PixelRefType, globalPool); - check_pixelref(TestImageGenerator::kSucceedGetPixels_TestType, - reporter, kSkDiscardable_PixelRefType, globalPool); + check_pixelref(TestImageGenerator::kFailGetPixels_TestType, reporter, globalPool); + check_pixelref(TestImageGenerator::kSucceedGetPixels_TestType, reporter, globalPool); } //////////////////////////////////////////////////////////////////////////////// |