Loading src/com/android/gallery3d/ui/TileImageView.java +12 −10 Original line number Diff line number Diff line Loading @@ -16,6 +16,10 @@ package com.android.gallery3d.ui; import android.graphics.Bitmap; import android.graphics.Rect; import android.graphics.RectF; import com.android.gallery3d.app.GalleryContext; import com.android.gallery3d.common.Utils; import com.android.gallery3d.data.DecodeUtils; Loading @@ -24,10 +28,6 @@ import com.android.gallery3d.util.ThreadPool; import com.android.gallery3d.util.ThreadPool.CancelListener; import com.android.gallery3d.util.ThreadPool.JobContext; import android.graphics.Bitmap; import android.graphics.Rect; import android.graphics.RectF; import java.util.HashMap; import java.util.Iterator; import java.util.Map; Loading Loading @@ -55,17 +55,20 @@ public class TileImageView extends GLView { * --> RECYCLED - by recycleTile) * DECODING --> RECYCLING - by recycleTile() * --> DECODED - by decodeTile() * --> DECODE_FAIL - by decodeTile() * RECYCLING --> RECYCLED - by decodeTile() * DECODED --> ACTIVATED - (after the decoded bitmap is uploaded) * DECODED --> RECYCLED - by recycleTile() * DECODE_FAIL -> RECYCLED - by recycleTile() * RECYCLED --> ACTIVATED - by obtainTile() */ private static final int STATE_ACTIVATED = 0x01; private static final int STATE_IN_QUEUE = 0x02; private static final int STATE_DECODING = 0x04; private static final int STATE_DECODED = 0x08; private static final int STATE_RECYCLING = 0x10; private static final int STATE_RECYCLED = 0x20; private static final int STATE_DECODE_FAIL = 0x10; private static final int STATE_RECYCLING = 0x20; private static final int STATE_RECYCLED = 0x40; private Model mModel; protected BitmapTexture mBackupImage; Loading Loading @@ -435,7 +438,7 @@ public class TileImageView extends GLView { mRecycledQueue.push(tile); return false; } tile.mTileState = STATE_DECODED; tile.mTileState = decodeComplete ? STATE_DECODED : STATE_DECODE_FAIL; return decodeComplete; } } Loading Loading @@ -526,7 +529,7 @@ public class TileImageView extends GLView { } else { mRenderComplete = false; } } else { } else if (tile.mTileState != STATE_DECODE_FAIL){ mRenderComplete = false; queueForDecode(tile); } Loading Loading @@ -603,11 +606,10 @@ public class TileImageView extends GLView { try { mDecodedTile = DecodeUtils.ensureGLCompatibleBitmap(mModel.getTile( mTileLevel, mX - borderLength, mY - borderLength, tileLength)); return mDecodedTile != null; } catch (Throwable t) { Log.w(TAG, "fail to decode tile", t); return false; } return mDecodedTile != null; } @Override Loading src/com/android/gallery3d/ui/TileImageViewAdapter.java +10 −2 Original line number Diff line number Diff line Loading @@ -16,8 +16,6 @@ package com.android.gallery3d.ui; import com.android.gallery3d.common.Utils; import android.graphics.Bitmap; import android.graphics.Bitmap.Config; import android.graphics.BitmapFactory; Loading @@ -25,7 +23,10 @@ import android.graphics.BitmapRegionDecoder; import android.graphics.Canvas; import android.graphics.Rect; import com.android.gallery3d.common.Utils; public class TileImageViewAdapter implements TileImageView.Model { private static final String TAG = "TileImageViewAdapter"; protected BitmapRegionDecoder mRegionDecoder; protected int mImageWidth; protected int mImageHeight; Loading Loading @@ -80,6 +81,8 @@ public class TileImageViewAdapter implements TileImageView.Model { @Override public synchronized Bitmap getTile(int level, int x, int y, int length) { if (mRegionDecoder == null) return null; Rect region = mRegionRect; Rect intersectRect = mIntersectRect; region.set(x, y, x + (length << level), y + (length << level)); Loading @@ -104,6 +107,11 @@ public class TileImageViewAdapter implements TileImageView.Model { // If so, we fill black pixels on it. if (intersectRect.equals(region)) return bitmap; if (bitmap == null) { Log.w(TAG, "fail in decoding region"); return null; } Bitmap tile = Bitmap.createBitmap(length, length, Config.ARGB_8888); Canvas canvas = new Canvas(tile); canvas.drawBitmap(bitmap, Loading Loading
src/com/android/gallery3d/ui/TileImageView.java +12 −10 Original line number Diff line number Diff line Loading @@ -16,6 +16,10 @@ package com.android.gallery3d.ui; import android.graphics.Bitmap; import android.graphics.Rect; import android.graphics.RectF; import com.android.gallery3d.app.GalleryContext; import com.android.gallery3d.common.Utils; import com.android.gallery3d.data.DecodeUtils; Loading @@ -24,10 +28,6 @@ import com.android.gallery3d.util.ThreadPool; import com.android.gallery3d.util.ThreadPool.CancelListener; import com.android.gallery3d.util.ThreadPool.JobContext; import android.graphics.Bitmap; import android.graphics.Rect; import android.graphics.RectF; import java.util.HashMap; import java.util.Iterator; import java.util.Map; Loading Loading @@ -55,17 +55,20 @@ public class TileImageView extends GLView { * --> RECYCLED - by recycleTile) * DECODING --> RECYCLING - by recycleTile() * --> DECODED - by decodeTile() * --> DECODE_FAIL - by decodeTile() * RECYCLING --> RECYCLED - by decodeTile() * DECODED --> ACTIVATED - (after the decoded bitmap is uploaded) * DECODED --> RECYCLED - by recycleTile() * DECODE_FAIL -> RECYCLED - by recycleTile() * RECYCLED --> ACTIVATED - by obtainTile() */ private static final int STATE_ACTIVATED = 0x01; private static final int STATE_IN_QUEUE = 0x02; private static final int STATE_DECODING = 0x04; private static final int STATE_DECODED = 0x08; private static final int STATE_RECYCLING = 0x10; private static final int STATE_RECYCLED = 0x20; private static final int STATE_DECODE_FAIL = 0x10; private static final int STATE_RECYCLING = 0x20; private static final int STATE_RECYCLED = 0x40; private Model mModel; protected BitmapTexture mBackupImage; Loading Loading @@ -435,7 +438,7 @@ public class TileImageView extends GLView { mRecycledQueue.push(tile); return false; } tile.mTileState = STATE_DECODED; tile.mTileState = decodeComplete ? STATE_DECODED : STATE_DECODE_FAIL; return decodeComplete; } } Loading Loading @@ -526,7 +529,7 @@ public class TileImageView extends GLView { } else { mRenderComplete = false; } } else { } else if (tile.mTileState != STATE_DECODE_FAIL){ mRenderComplete = false; queueForDecode(tile); } Loading Loading @@ -603,11 +606,10 @@ public class TileImageView extends GLView { try { mDecodedTile = DecodeUtils.ensureGLCompatibleBitmap(mModel.getTile( mTileLevel, mX - borderLength, mY - borderLength, tileLength)); return mDecodedTile != null; } catch (Throwable t) { Log.w(TAG, "fail to decode tile", t); return false; } return mDecodedTile != null; } @Override Loading
src/com/android/gallery3d/ui/TileImageViewAdapter.java +10 −2 Original line number Diff line number Diff line Loading @@ -16,8 +16,6 @@ package com.android.gallery3d.ui; import com.android.gallery3d.common.Utils; import android.graphics.Bitmap; import android.graphics.Bitmap.Config; import android.graphics.BitmapFactory; Loading @@ -25,7 +23,10 @@ import android.graphics.BitmapRegionDecoder; import android.graphics.Canvas; import android.graphics.Rect; import com.android.gallery3d.common.Utils; public class TileImageViewAdapter implements TileImageView.Model { private static final String TAG = "TileImageViewAdapter"; protected BitmapRegionDecoder mRegionDecoder; protected int mImageWidth; protected int mImageHeight; Loading Loading @@ -80,6 +81,8 @@ public class TileImageViewAdapter implements TileImageView.Model { @Override public synchronized Bitmap getTile(int level, int x, int y, int length) { if (mRegionDecoder == null) return null; Rect region = mRegionRect; Rect intersectRect = mIntersectRect; region.set(x, y, x + (length << level), y + (length << level)); Loading @@ -104,6 +107,11 @@ public class TileImageViewAdapter implements TileImageView.Model { // If so, we fill black pixels on it. if (intersectRect.equals(region)) return bitmap; if (bitmap == null) { Log.w(TAG, "fail in decoding region"); return null; } Bitmap tile = Bitmap.createBitmap(length, length, Config.ARGB_8888); Canvas canvas = new Canvas(tile); canvas.drawBitmap(bitmap, Loading