kill unused SkFlipPixelRef
Review URL: https://codereview.appspot.com/6949043

git-svn-id: http://skia.googlecode.com/svn/trunk@6781 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/gyp/SampleApp.gyp b/gyp/SampleApp.gyp
index 5668428..8e8fec2 100644
--- a/gyp/SampleApp.gyp
+++ b/gyp/SampleApp.gyp
@@ -71,7 +71,6 @@
         '../samplecode/SampleMovie.cpp',
         '../samplecode/SampleOvalTest.cpp',
         '../samplecode/SampleOverflow.cpp',
-        '../samplecode/SamplePageFlip.cpp',
         '../samplecode/SamplePatch.cpp',
         '../samplecode/SamplePath.cpp',
         '../samplecode/SamplePathClip.cpp',
@@ -156,7 +155,6 @@
           'sources!': [
             # require UNIX functions
             '../samplecode/SampleEncode.cpp',
-            '../samplecode/SamplePageFlip.cpp',
           ],
         }],
         [ 'skia_os == "mac"', {
diff --git a/gyp/images.gyp b/gyp/images.gyp
index 1441359..1bfd2d3 100644
--- a/gyp/images.gyp
+++ b/gyp/images.gyp
@@ -19,7 +19,6 @@
       ],
       'sources': [
         '../include/images/SkBitmapFactory.h',
-        '../include/images/SkFlipPixelRef.h',
         '../include/images/SkImageDecoder.h',
         '../include/images/SkImageEncoder.h',
         '../include/images/SkImageRef.h',
@@ -32,7 +31,6 @@
         '../src/images/bmpdecoderhelper.h',
         '../src/images/SkBitmapFactory.cpp',
         '../src/images/SkFDStream.cpp',
-        '../src/images/SkFlipPixelRef.cpp',
         '../src/images/SkImageDecoder.cpp',
         '../src/images/SkImageDecoder_Factory.cpp',
         '../src/images/SkImageDecoder_libjpeg.cpp',
diff --git a/include/images/SkFlipPixelRef.h b/include/images/SkFlipPixelRef.h
deleted file mode 100644
index ac43780..0000000
--- a/include/images/SkFlipPixelRef.h
+++ /dev/null
@@ -1,102 +0,0 @@
-
-/*
- * Copyright 2008 The Android Open Source Project
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-
-#ifndef SkFlipPixelRef_DEFINED
-#define SkFlipPixelRef_DEFINED
-
-#include "SkBitmap.h"
-#include "SkPageFlipper.h"
-#include "SkPixelRef.h"
-#include "SkThread.h"
-
-class SkRegion;
-
-class SkFlipPixelRef : public SkPixelRef {
-public:
-            SkFlipPixelRef(SkBitmap::Config, int width, int height);
-    virtual ~SkFlipPixelRef();
-
-    bool isDirty() const { return fFlipper.isDirty(); }
-    const SkRegion& dirtyRgn() const { return fFlipper.dirtyRgn(); }
-
-    void inval() { fFlipper.inval(); }
-    void inval(const SkIRect& rect) { fFlipper.inval(rect); }
-    void inval(const SkRegion& rgn) { fFlipper.inval(rgn); }
-    void inval(const SkRect& r, bool doAA) { fFlipper.inval(r, doAA); }
-
-    const SkRegion& beginUpdate(SkBitmap* device);
-    void endUpdate();
-
-    SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkFlipPixelRef)
-
-protected:
-    virtual void* onLockPixels(SkColorTable**);
-    virtual void onUnlockPixels();
-
-    SkFlipPixelRef(SkFlattenableReadBuffer&);
-    virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE;
-
-private:
-    void getFrontBack(const void** front, void** back) const {
-        if (front) {
-            *front = fPage0;
-        }
-        if (back) {
-            *back = fPage1;
-        }
-    }
-
-    void    swapPages();
-
-    // Helper to copy pixels from srcAddr to the dst bitmap, clipped to clip.
-    // srcAddr points to memory with the same config as dst.
-    static void CopyBitsFromAddr(const SkBitmap& dst, const SkRegion& clip,
-                                 const void* srcAddr);
-
-    SkMutex         fMutex;
-    SkPageFlipper   fFlipper;
-
-    void*           fStorage;
-    void*           fPage0; // points into fStorage;
-    void*           fPage1; // points into fStorage;
-    size_t          fSize;  // size of 1 page. fStorage holds 2 pages
-    SkBitmap::Config fConfig;
-
-    typedef SkPixelRef INHERITED;
-};
-
-class SkAutoFlipUpdate : SkNoncopyable {
-public:
-    SkAutoFlipUpdate(SkFlipPixelRef* ref) : fRef(ref) {
-        fDirty = &ref->beginUpdate(&fBitmap);
-    }
-    ~SkAutoFlipUpdate() {
-        if (fRef) {
-            fRef->endUpdate();
-        }
-    }
-
-    const SkBitmap& bitmap() const { return fBitmap; }
-    const SkRegion& dirty() const { return *fDirty; }
-
-    // optional. This gets automatically called in the destructor (only once)
-    void endUpdate() {
-        if (fRef) {
-            fRef->endUpdate();
-            fRef = NULL;
-        }
-    }
-
-private:
-    SkFlipPixelRef* fRef;
-    SkBitmap        fBitmap;
-    const SkRegion* fDirty;
-};
-
-#endif
diff --git a/samplecode/SamplePageFlip.cpp b/samplecode/SamplePageFlip.cpp
deleted file mode 100644
index 1020189..0000000
--- a/samplecode/SamplePageFlip.cpp
+++ /dev/null
@@ -1,180 +0,0 @@
-
-/*
- * Copyright 2011 Google Inc.
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-#include "SampleCode.h"
-#include "SkView.h"
-#include "SkCanvas.h"
-#include "SkGraphics.h"
-#include "SkRandom.h"
-#include "SkFlipPixelRef.h"
-#include "SkPageFlipper.h"
-
-#include <pthread.h>
-
-#define WIDTH   160
-#define HEIGHT  200
-
-static bool gDone;
-
-static void bounce(SkScalar* x, SkScalar* dx, const int max) {
-    *x += *dx;
-    if (*x < 0) {
-        *x = 0;
-        if (*dx < 0) {
-            *dx = -*dx;
-        }
-    } else if (*x > SkIntToScalar(max)) {
-        *x = SkIntToScalar(max);
-        if (*dx > 0) {
-            *dx = -*dx;
-        }
-    }
-}
-
-static void* draw_proc(void* context) {
-    const int OVALW = 32;
-    const int OVALH = 32;
-
-    const SkBitmap* bm = static_cast<const SkBitmap*>(context);
-    SkFlipPixelRef* ref = static_cast<SkFlipPixelRef*>(bm->pixelRef());
-
-    const int DSCALE = 1;
-    SkScalar    dx = SkIntToScalar(7) / DSCALE;
-    SkScalar    dy = SkIntToScalar(5) / DSCALE;
-    SkScalar    x = 0;
-    SkScalar    y = 0;
-
-    SkPaint paint;
-
-    paint.setAntiAlias(true);
-    paint.setColor(SK_ColorRED);
-
-    SkRect oval;
-    oval.setEmpty();
-
-    SkRect clipR = SkRect::MakeWH(SkIntToScalar(bm->width()), SkIntToScalar(bm->height()));
-    clipR.inset(SK_Scalar1/4, SK_Scalar1/4);
-
-    while (!gDone) {
-        ref->inval(oval, true);
-        oval.set(x, y, x + SkIntToScalar(OVALW), y + SkIntToScalar(OVALH));
-        ref->inval(oval, true);
-
-        SkAutoFlipUpdate    update(ref);
-
-        if (!update.dirty().isEmpty()) {
-            // this must be local to the loop, since it needs to forget the pixels
-            // its writing to after each iteration, since we do the swap
-            SkCanvas    canvas(update.bitmap());
-            canvas.clipRegion(update.dirty());
-            canvas.drawColor(0, SkXfermode::kClear_Mode);
-            canvas.clipRect(clipR, SkRegion::kIntersect_Op, true);
-
-            canvas.drawOval(oval, paint);
-        }
-        bounce(&x, &dx, WIDTH-OVALW);
-        bounce(&y, &dy, HEIGHT-OVALH);
-    }
-    return NULL;
-}
-
-static const SkBitmap::Config gConfigs[] = {
-    SkBitmap::kARGB_8888_Config,
-    SkBitmap::kRGB_565_Config,
-    SkBitmap::kARGB_4444_Config,
-    SkBitmap::kA8_Config
-};
-
-class PageFlipView : public SampleView {
-    bool fOnce;
-public:
-
-    enum { N = SK_ARRAY_COUNT(gConfigs) };
-
-    pthread_t   fThreads[N];
-    SkBitmap    fBitmaps[N];
-
-    PageFlipView() {
-        gDone = false;
-        fOnce = false;
-        this->setBGColor(0xFFDDDDDD);
-    }
-
-    void init() {
-        if (fOnce) {
-            return;
-        }
-        fOnce = true;
-
-        for (int i = 0; i < N; i++) {
-            int             status;
-            pthread_attr_t  attr;
-
-            status = pthread_attr_init(&attr);
-            SkASSERT(0 == status);
-
-            fBitmaps[i].setConfig(gConfigs[i], WIDTH, HEIGHT);
-            SkFlipPixelRef* pr = new SkFlipPixelRef(gConfigs[i], WIDTH, HEIGHT);
-            fBitmaps[i].setPixelRef(pr)->unref();
-            fBitmaps[i].eraseColor(SK_ColorTRANSPARENT);
-
-            status = pthread_create(&fThreads[i], &attr,  draw_proc, &fBitmaps[i]);
-            SkASSERT(0 == status);
-        }
-    }
-
-    virtual ~PageFlipView() {
-        if (!fOnce) {
-            return;
-        }
-        gDone = true;
-        for (int i = 0; i < N; i++) {
-            void* ret;
-            int status = pthread_join(fThreads[i], &ret);
-            SkASSERT(0 == status);
-        }
-    }
-
-protected:
-    // overrides from SkEventSink
-    virtual bool onQuery(SkEvent* evt) {
-        if (SampleCode::TitleQ(*evt)) {
-            SampleCode::TitleR(evt, "PageFlip");
-            return true;
-        }
-        return this->INHERITED::onQuery(evt);
-    }
-
-    virtual void onDrawContent(SkCanvas* canvas) {
-        this->init();
-        SkScalar x = SkIntToScalar(10);
-        SkScalar y = SkIntToScalar(10);
-        for (int i = 0; i < N; i++) {
-            canvas->drawBitmap(fBitmaps[i], x, y);
-            x += SkIntToScalar(fBitmaps[i].width() + 20);
-        }
-        this->inval(NULL);
-    }
-
-    virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y) {
-        this->inval(NULL);
-        return this->INHERITED::onFindClickHandler(x, y);
-    }
-
-    virtual bool onClick(Click* click) {
-        return this->INHERITED::onClick(click);
-    }
-
-private:
-    typedef SampleView INHERITED;
-};
-
-//////////////////////////////////////////////////////////////////////////////
-
-static SkView* MyFactory() { return new PageFlipView; }
-static SkViewRegister reg(MyFactory);
-
diff --git a/src/images/SkFlipPixelRef.cpp b/src/images/SkFlipPixelRef.cpp
deleted file mode 100644
index 2e73ece..0000000
--- a/src/images/SkFlipPixelRef.cpp
+++ /dev/null
@@ -1,125 +0,0 @@
-
-/*
- * Copyright 2011 Google Inc.
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-#include "SkFlipPixelRef.h"
-#include "SkFlattenableBuffers.h"
-#include "SkRegion.h"
-
-SkFlipPixelRef::SkFlipPixelRef(SkBitmap::Config config, int width, int height)
-: fFlipper(width, height) {
-    fConfig = config;
-    fSize = SkBitmap::ComputeSize(config, width, height);
-    fStorage = sk_malloc_throw(fSize << 1);
-    fPage0 = fStorage;
-    fPage1 = (char*)fStorage + fSize;
-}
-
-SkFlipPixelRef::~SkFlipPixelRef() {
-    sk_free(fStorage);
-}
-
-const SkRegion& SkFlipPixelRef::beginUpdate(SkBitmap* device) {
-    void*       writeAddr;
-    const void* readAddr;
-    this->getFrontBack(&readAddr, &writeAddr);
-
-    device->setConfig(fConfig, fFlipper.width(), fFlipper.height());
-    device->setPixels(writeAddr);
-
-    SkRegion    copyBits;
-    const SkRegion& dirty = fFlipper.update(&copyBits);
-
-    SkFlipPixelRef::CopyBitsFromAddr(*device, copyBits, readAddr);
-    return dirty;
-}
-
-void SkFlipPixelRef::endUpdate() {
-    this->swapPages();
-}
-
-///////////////////////////////////////////////////////////////////////////////
-
-void* SkFlipPixelRef::onLockPixels(SkColorTable** ct) {
-    fMutex.acquire();
-    *ct = NULL;
-    return fPage0;
-}
-
-void SkFlipPixelRef::onUnlockPixels() {
-    fMutex.release();
-}
-
-void SkFlipPixelRef::swapPages() {
-    fMutex.acquire();
-    SkTSwap<void*>(fPage0, fPage1);
-    this->notifyPixelsChanged();
-    fMutex.release();
-}
-
-void SkFlipPixelRef::flatten(SkFlattenableWriteBuffer& buffer) const {
-    this->INHERITED::flatten(buffer);
-    // only need to write page0
-    buffer.writeByteArray(fPage0, fSize);
-}
-
-SkFlipPixelRef::SkFlipPixelRef(SkFlattenableReadBuffer& buffer)
-        : INHERITED(buffer, NULL) {
-    fSize = buffer.getArrayCount();
-    fStorage = sk_malloc_throw(fSize << 1);
-    fPage0 = fStorage;
-    fPage1 = (char*)fStorage + fSize;
-    buffer.readByteArray(fPage0);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-
-static void copyRect(const SkBitmap& dst, const SkIRect& rect,
-                     const void* srcAddr, int shift) {
-    const size_t offset = rect.fTop * dst.rowBytes() + (rect.fLeft << shift);
-    char* dstP = static_cast<char*>(dst.getPixels()) + offset;
-    const char* srcP = static_cast<const char*>(srcAddr) + offset;
-    const size_t rb = dst.rowBytes();
-    const size_t bytes = rect.width() << shift;
-
-    int height = rect.height();
-    while (--height >= 0) {
-        memcpy(dstP, srcP, bytes);
-        dstP += rb;
-        srcP += rb;
-    }
-}
-
-static int getShift(SkBitmap::Config config) {
-    switch (config) {
-        case SkBitmap::kARGB_8888_Config:
-            return 2;
-        case SkBitmap::kRGB_565_Config:
-        case SkBitmap::kARGB_4444_Config:
-            return 1;
-        case SkBitmap::kIndex8_Config:
-        case SkBitmap::kA8_Config:
-            return 0;
-        default:
-            return -1;  // signal not supported
-    }
-}
-
-void SkFlipPixelRef::CopyBitsFromAddr(const SkBitmap& dst, const SkRegion& clip,
-                                      const void* srcAddr) {
-    const int shift = getShift(dst.config());
-    if (shift < 0) {
-        return;
-    }
-
-    const SkIRect bounds = {0, 0, dst.width(), dst.height()};
-    SkRegion::Cliperator iter(clip, bounds);
-
-    while (!iter.done()) {
-        copyRect(dst, iter.rect(), srcAddr, shift);
-        iter.next();
-    }
-}
diff --git a/src/images/SkImages.cpp b/src/images/SkImages.cpp
index 28dfd7f..0bcc33f 100644
--- a/src/images/SkImages.cpp
+++ b/src/images/SkImages.cpp
@@ -6,11 +6,9 @@
  */
 
 #include "SkFlattenable.h"
-#include "SkFlipPixelRef.h"
 #include "SkImageRef_GlobalPool.h"
 #include "SkImages.h"
 
 void SkImages::InitializeFlattenables() {
-    SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkFlipPixelRef)
     SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkImageRef_GlobalPool)
 }