diff options
Diffstat (limited to 'src/com/android/gallery3d/ui/BitmapLoader.java')
-rw-r--r-- | src/com/android/gallery3d/ui/BitmapLoader.java | 108 |
1 files changed, 0 insertions, 108 deletions
diff --git a/src/com/android/gallery3d/ui/BitmapLoader.java b/src/com/android/gallery3d/ui/BitmapLoader.java deleted file mode 100644 index a708a90f3..000000000 --- a/src/com/android/gallery3d/ui/BitmapLoader.java +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Copyright (C) 2010 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.gallery3d.ui; - -import android.graphics.Bitmap; - -import com.android.photos.data.GalleryBitmapPool; -import com.android.gallery3d.util.Future; -import com.android.gallery3d.util.FutureListener; - -// We use this class to -// 1.) load bitmaps in background. -// 2.) as a place holder for the loaded bitmap -public abstract class BitmapLoader implements FutureListener<Bitmap> { - @SuppressWarnings("unused") - private static final String TAG = "BitmapLoader"; - - /* Transition Map: - * INIT -> REQUESTED, RECYCLED - * REQUESTED -> INIT (cancel), LOADED, ERROR, RECYCLED - * LOADED, ERROR -> RECYCLED - */ - private static final int STATE_INIT = 0; - private static final int STATE_REQUESTED = 1; - private static final int STATE_LOADED = 2; - private static final int STATE_ERROR = 3; - private static final int STATE_RECYCLED = 4; - - private int mState = STATE_INIT; - // mTask is not null only when a task is on the way - private Future<Bitmap> mTask; - private Bitmap mBitmap; - - @Override - public void onFutureDone(Future<Bitmap> future) { - synchronized (this) { - mTask = null; - mBitmap = future.get(); - if (mState == STATE_RECYCLED) { - if (mBitmap != null) { - GalleryBitmapPool.getInstance().put(mBitmap); - mBitmap = null; - } - return; // don't call callback - } - if (future.isCancelled() && mBitmap == null) { - if (mState == STATE_REQUESTED) mTask = submitBitmapTask(this); - return; // don't call callback - } else { - mState = mBitmap == null ? STATE_ERROR : STATE_LOADED; - } - } - onLoadComplete(mBitmap); - } - - public synchronized void startLoad() { - if (mState == STATE_INIT) { - mState = STATE_REQUESTED; - if (mTask == null) mTask = submitBitmapTask(this); - } - } - - public synchronized void cancelLoad() { - if (mState == STATE_REQUESTED) { - mState = STATE_INIT; - if (mTask != null) mTask.cancel(); - } - } - - // Recycle the loader and the bitmap - public synchronized void recycle() { - mState = STATE_RECYCLED; - if (mBitmap != null) { - GalleryBitmapPool.getInstance().put(mBitmap); - mBitmap = null; - } - if (mTask != null) mTask.cancel(); - } - - public synchronized boolean isRequestInProgress() { - return mState == STATE_REQUESTED; - } - - public synchronized boolean isRecycled() { - return mState == STATE_RECYCLED; - } - - public synchronized Bitmap getBitmap() { - return mBitmap; - } - - abstract protected Future<Bitmap> submitBitmapTask(FutureListener<Bitmap> l); - abstract protected void onLoadComplete(Bitmap bitmap); -} |