aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/lazy
diff options
context:
space:
mode:
authorGravatar Mike Reed <reed@google.com>2016-10-25 09:57:13 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2016-10-25 14:19:07 +0000
commit7614794c9ad14d76abed6cf00890ad1a09c2cb8b (patch)
treefb79a90fe28039038d5d54e809f68e83399cb32a /src/lazy
parent67c7c81a82b6351e9fbbf235084d7120162d9268 (diff)
remove discardablepixelref
BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=3883 Change-Id: Ica284be78563a4ccd6e0cb07404064fb5511ba57 Reviewed-on: https://skia-review.googlesource.com/3883 Commit-Queue: Mike Reed <reed@google.com> Reviewed-by: Florin Malita <fmalita@chromium.org>
Diffstat (limited to 'src/lazy')
-rw-r--r--src/lazy/SkDiscardablePixelRef.cpp155
-rw-r--r--src/lazy/SkDiscardablePixelRef.h81
2 files changed, 0 insertions, 236 deletions
diff --git a/src/lazy/SkDiscardablePixelRef.cpp b/src/lazy/SkDiscardablePixelRef.cpp
deleted file mode 100644
index ba4a50ff82..0000000000
--- a/src/lazy/SkDiscardablePixelRef.cpp
+++ /dev/null
@@ -1,155 +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 "SkDiscardablePixelRef.h"
-#include "SkDiscardableMemory.h"
-#include "SkImageGenerator.h"
-
-SkDiscardablePixelRef::SkDiscardablePixelRef(const SkImageInfo& info,
- SkImageGenerator* generator,
- size_t rowBytes,
- SkDiscardableMemory::Factory* fact)
- : INHERITED(info)
- , fGenerator(generator)
- , fDMFactory(fact)
- , fRowBytes(rowBytes)
- , fDiscardableMemory(nullptr)
- , fDiscardableMemoryIsLocked(false)
-{
- SkASSERT(fGenerator != nullptr);
- SkASSERT(fRowBytes > 0);
- // The SkImageGenerator contract requires fGenerator to always
- // decode the same image on each call to getPixels().
- this->setImmutable();
- SkSafeRef(fDMFactory);
-}
-
-SkDiscardablePixelRef::~SkDiscardablePixelRef() {
- if (fDiscardableMemoryIsLocked) {
- fDiscardableMemory->unlock();
- fDiscardableMemoryIsLocked = false;
- }
- delete fDiscardableMemory;
- SkSafeUnref(fDMFactory);
- delete fGenerator;
-}
-
-bool SkDiscardablePixelRef::onNewLockPixels(LockRec* rec) {
- if (fDiscardableMemory != nullptr) {
- if (fDiscardableMemory->lock()) {
- fDiscardableMemoryIsLocked = true;
- rec->fPixels = fDiscardableMemory->data();
- rec->fColorTable = fCTable.get();
- rec->fRowBytes = fRowBytes;
- return true;
- }
- delete fDiscardableMemory;
- fDiscardableMemory = nullptr;
- fDiscardableMemoryIsLocked = false;
- }
-
- const size_t size = this->info().getSafeSize(fRowBytes);
-
- if (fDMFactory != nullptr) {
- fDiscardableMemory = fDMFactory->create(size);
- fDiscardableMemoryIsLocked = true;
- } else {
- fDiscardableMemory = SkDiscardableMemory::Create(size);
- fDiscardableMemoryIsLocked = true;
- }
- if (nullptr == fDiscardableMemory) {
- fDiscardableMemoryIsLocked = false;
- return false; // Memory allocation failed.
- }
-
- void* pixels = fDiscardableMemory->data();
- const SkImageInfo& info = this->info();
- SkPMColor colors[256];
- int colorCount = 0;
-
- if (!fGenerator->getPixels(info, pixels, fRowBytes, colors, &colorCount)) {
- fDiscardableMemory->unlock();
- fDiscardableMemoryIsLocked = false;
- delete fDiscardableMemory;
- fDiscardableMemory = nullptr;
- return false;
- }
-
- // Note: our ctable is not purgeable, as it is not stored in the discardablememory block.
- // This is because SkColorTable is refcntable, and therefore our caller could hold onto it
- // beyond the scope of a lock/unlock. If we change the API/lifecycle for SkColorTable, we
- // could move it into the block, but then again perhaps it is small enough that this doesn't
- // really matter.
- if (colorCount > 0) {
- fCTable.reset(new SkColorTable(colors, colorCount));
- } else {
- fCTable.reset(nullptr);
- }
-
- rec->fPixels = pixels;
- rec->fColorTable = fCTable.get();
- rec->fRowBytes = fRowBytes;
- return true;
-}
-
-void SkDiscardablePixelRef::onUnlockPixels() {
- fDiscardableMemory->unlock();
- fDiscardableMemoryIsLocked = false;
-}
-
-bool SkDEPRECATED_InstallDiscardablePixelRef(SkImageGenerator* generator, const SkIRect* subset,
- SkBitmap* dst, SkDiscardableMemory::Factory* factory) {
- SkAutoTDelete<SkImageGenerator> autoGenerator(generator);
- if (nullptr == autoGenerator.get()) {
- return false;
- }
-
- SkImageInfo prInfo = autoGenerator->getInfo();
- if (prInfo.isEmpty()) {
- return false;
- }
-
- SkIPoint origin = SkIPoint::Make(0, 0);
- SkImageInfo bmInfo = prInfo;
- if (subset) {
- const SkIRect prBounds = SkIRect::MakeWH(prInfo.width(), prInfo.height());
- if (subset->isEmpty() || !prBounds.contains(*subset)) {
- return false;
- }
- bmInfo = prInfo.makeWH(subset->width(), subset->height());
- origin.set(subset->x(), subset->y());
- }
-
- // must compute our desired rowBytes w.r.t. the pixelRef's dimensions, not ours, which may be
- // smaller.
- if (!dst->setInfo(bmInfo, prInfo.minRowBytes())) {
- return false;
- }
-
- // Since dst->setInfo() may have changed/fixed-up info, we check from the bitmap
- SkASSERT(dst->info().colorType() != kUnknown_SkColorType);
-
- if (dst->empty()) { // Use a normal pixelref.
- return dst->tryAllocPixels();
- }
- SkAutoTUnref<SkDiscardablePixelRef> ref(
- new SkDiscardablePixelRef(prInfo, autoGenerator.release(), dst->rowBytes(), factory));
- dst->setPixelRef(ref, origin.x(), origin.y());
- return true;
-}
-
-// These are the public API
-
-bool SkDEPRECATED_InstallDiscardablePixelRef(SkImageGenerator* generator, SkBitmap* dst) {
- return SkDEPRECATED_InstallDiscardablePixelRef(generator, nullptr, dst, nullptr);
-}
-
-bool SkDEPRECATED_InstallDiscardablePixelRef(SkData* encoded, SkBitmap* dst) {
- SkImageGenerator* generator = SkImageGenerator::NewFromEncoded(encoded);
- return generator ?
- SkDEPRECATED_InstallDiscardablePixelRef(generator, nullptr, dst, nullptr) : false;
-}
diff --git a/src/lazy/SkDiscardablePixelRef.h b/src/lazy/SkDiscardablePixelRef.h
deleted file mode 100644
index 73a2b08250..0000000000
--- a/src/lazy/SkDiscardablePixelRef.h
+++ /dev/null
@@ -1,81 +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 SkDiscardablePixelRef_DEFINED
-#define SkDiscardablePixelRef_DEFINED
-
-#include "SkDiscardableMemory.h"
-#include "SkImageGeneratorPriv.h"
-#include "SkImageInfo.h"
-#include "SkPixelRef.h"
-
-/**
- * A PixelRef backed by SkDiscardableMemory, with the ability to
- * re-generate the pixels (via a SkImageGenerator) if the DM is
- * purged.
- */
-class SkDiscardablePixelRef : public SkPixelRef {
-public:
-
- SkDiscardableMemory* diagnostic_only_getDiscardable() const override {
- return fDiscardableMemory;
- }
-
-protected:
- ~SkDiscardablePixelRef();
-
- bool onNewLockPixels(LockRec*) override;
- void onUnlockPixels() override;
- bool onLockPixelsAreWritable() const override { return false; }
-
- SkData* onRefEncodedData() override {
- return fGenerator->refEncodedData();
- }
-
- bool onIsLazyGenerated() const override { return true; }
-
-private:
- SkImageGenerator* const fGenerator;
- SkDiscardableMemory::Factory* const fDMFactory;
- const size_t fRowBytes;
- // These const members should not change over the life of the
- // PixelRef, since the SkBitmap doesn't expect them to change.
-
- SkDiscardableMemory* fDiscardableMemory;
- bool fDiscardableMemoryIsLocked;
- SkAutoTUnref<SkColorTable> fCTable;
-
- /* Takes ownership of SkImageGenerator. */
- SkDiscardablePixelRef(const SkImageInfo&, SkImageGenerator*,
- size_t rowBytes,
- SkDiscardableMemory::Factory* factory);
-
- bool onQueryYUV8(SkYUVSizeInfo* sizeInfo, SkYUVColorSpace* colorSpace) const override {
- // If the image was already decoded with lockPixels(), favor not
- // re-decoding to YUV8 planes.
- if (fDiscardableMemory) {
- return false;
- }
- return fGenerator->queryYUV8(sizeInfo, colorSpace);
- }
-
- bool onGetYUV8Planes(const SkYUVSizeInfo& sizeInfo, void* planes[3]) override {
- // If the image was already decoded with lockPixels(), favor not
- // re-decoding to YUV8 planes.
- if (fDiscardableMemory) {
- return false;
- }
- return fGenerator->getYUV8Planes(sizeInfo, planes);
- }
-
- friend bool SkDEPRECATED_InstallDiscardablePixelRef(SkImageGenerator*, const SkIRect*, SkBitmap*,
- SkDiscardableMemory::Factory*);
-
- typedef SkPixelRef INHERITED;
-};
-
-#endif // SkDiscardablePixelRef_DEFINED