Loading src/com/android/gallery3d/filtershow/cache/ImageLoader.java +13 −0 Original line number Original line Diff line number Diff line Loading @@ -50,6 +50,7 @@ import java.io.FileNotFoundException; import java.io.IOException; import java.io.IOException; import java.io.InputStream; import java.io.InputStream; import java.util.Vector; import java.util.Vector; import java.util.concurrent.locks.ReentrantLock; public class ImageLoader { public class ImageLoader { Loading Loading @@ -83,6 +84,8 @@ public class ImageLoader { private Rect mOriginalBounds = null; private Rect mOriginalBounds = null; private static int mZoomOrientation = ORI_NORMAL; private static int mZoomOrientation = ORI_NORMAL; private ReentrantLock mLoadingLock = new ReentrantLock(); public ImageLoader(FilterShowActivity activity, Context context) { public ImageLoader(FilterShowActivity activity, Context context) { mActivity = activity; mActivity = activity; mContext = context; mContext = context; Loading @@ -99,6 +102,7 @@ public class ImageLoader { } } public void loadBitmap(Uri uri,int size) { public void loadBitmap(Uri uri,int size) { mLoadingLock.lock(); mUri = uri; mUri = uri; mOrientation = getOrientation(mContext, uri); mOrientation = getOrientation(mContext, uri); mOriginalBitmapSmall = loadScaledBitmap(uri, 160); mOriginalBitmapSmall = loadScaledBitmap(uri, 160); Loading @@ -108,6 +112,7 @@ public class ImageLoader { } } mOriginalBitmapLarge = loadScaledBitmap(uri, size); mOriginalBitmapLarge = loadScaledBitmap(uri, size); updateBitmaps(); updateBitmaps(); mLoadingLock.unlock(); } } public Uri getUri() { public Uri getUri() { Loading Loading @@ -308,10 +313,12 @@ public class ImageLoader { } } public void addListener(ImageShow imageShow) { public void addListener(ImageShow imageShow) { mLoadingLock.lock(); if (!mListeners.contains(imageShow)) { if (!mListeners.contains(imageShow)) { mListeners.add(imageShow); mListeners.add(imageShow); } } mHiresCache.addObserver(imageShow); mHiresCache.addObserver(imageShow); mLoadingLock.unlock(); } } private void warnListeners() { private void warnListeners() { Loading @@ -333,6 +340,7 @@ public class ImageLoader { // move this to a background thread. // move this to a background thread. public Bitmap getScaleOneImageForPreset(ImageShow caller, ImagePreset imagePreset, Rect bounds, public Bitmap getScaleOneImageForPreset(ImageShow caller, ImagePreset imagePreset, Rect bounds, boolean force) { boolean force) { mLoadingLock.lock(); Bitmap bmp = mZoomCache.getImage(imagePreset, bounds); Bitmap bmp = mZoomCache.getImage(imagePreset, bounds); if (force || bmp == null) { if (force || bmp == null) { bmp = loadRegionBitmap(mUri, bounds); bmp = loadRegionBitmap(mUri, bounds); Loading @@ -347,12 +355,14 @@ public class ImageLoader { return bmp2; return bmp2; } } } } mLoadingLock.unlock(); return bmp; return bmp; } } // Caching method // Caching method public Bitmap getImageForPreset(ImageShow caller, ImagePreset imagePreset, public Bitmap getImageForPreset(ImageShow caller, ImagePreset imagePreset, boolean hiRes) { boolean hiRes) { mLoadingLock.lock(); if (mOriginalBitmapSmall == null) { if (mOriginalBitmapSmall == null) { return null; return null; } } Loading @@ -377,13 +387,16 @@ public class ImageLoader { mCache.addObserver(caller); mCache.addObserver(caller); } } } } mLoadingLock.unlock(); return filteredImage; return filteredImage; } } public void resetImageForPreset(ImagePreset imagePreset, ImageShow caller) { public void resetImageForPreset(ImagePreset imagePreset, ImageShow caller) { mLoadingLock.lock(); mHiresCache.reset(imagePreset); mHiresCache.reset(imagePreset); mCache.reset(imagePreset); mCache.reset(imagePreset); mZoomCache.reset(imagePreset); mZoomCache.reset(imagePreset); mLoadingLock.unlock(); } } public void saveImage(ImagePreset preset, final FilterShowActivity filterShowActivity, public void saveImage(ImagePreset preset, final FilterShowActivity filterShowActivity, Loading Loading
src/com/android/gallery3d/filtershow/cache/ImageLoader.java +13 −0 Original line number Original line Diff line number Diff line Loading @@ -50,6 +50,7 @@ import java.io.FileNotFoundException; import java.io.IOException; import java.io.IOException; import java.io.InputStream; import java.io.InputStream; import java.util.Vector; import java.util.Vector; import java.util.concurrent.locks.ReentrantLock; public class ImageLoader { public class ImageLoader { Loading Loading @@ -83,6 +84,8 @@ public class ImageLoader { private Rect mOriginalBounds = null; private Rect mOriginalBounds = null; private static int mZoomOrientation = ORI_NORMAL; private static int mZoomOrientation = ORI_NORMAL; private ReentrantLock mLoadingLock = new ReentrantLock(); public ImageLoader(FilterShowActivity activity, Context context) { public ImageLoader(FilterShowActivity activity, Context context) { mActivity = activity; mActivity = activity; mContext = context; mContext = context; Loading @@ -99,6 +102,7 @@ public class ImageLoader { } } public void loadBitmap(Uri uri,int size) { public void loadBitmap(Uri uri,int size) { mLoadingLock.lock(); mUri = uri; mUri = uri; mOrientation = getOrientation(mContext, uri); mOrientation = getOrientation(mContext, uri); mOriginalBitmapSmall = loadScaledBitmap(uri, 160); mOriginalBitmapSmall = loadScaledBitmap(uri, 160); Loading @@ -108,6 +112,7 @@ public class ImageLoader { } } mOriginalBitmapLarge = loadScaledBitmap(uri, size); mOriginalBitmapLarge = loadScaledBitmap(uri, size); updateBitmaps(); updateBitmaps(); mLoadingLock.unlock(); } } public Uri getUri() { public Uri getUri() { Loading Loading @@ -308,10 +313,12 @@ public class ImageLoader { } } public void addListener(ImageShow imageShow) { public void addListener(ImageShow imageShow) { mLoadingLock.lock(); if (!mListeners.contains(imageShow)) { if (!mListeners.contains(imageShow)) { mListeners.add(imageShow); mListeners.add(imageShow); } } mHiresCache.addObserver(imageShow); mHiresCache.addObserver(imageShow); mLoadingLock.unlock(); } } private void warnListeners() { private void warnListeners() { Loading @@ -333,6 +340,7 @@ public class ImageLoader { // move this to a background thread. // move this to a background thread. public Bitmap getScaleOneImageForPreset(ImageShow caller, ImagePreset imagePreset, Rect bounds, public Bitmap getScaleOneImageForPreset(ImageShow caller, ImagePreset imagePreset, Rect bounds, boolean force) { boolean force) { mLoadingLock.lock(); Bitmap bmp = mZoomCache.getImage(imagePreset, bounds); Bitmap bmp = mZoomCache.getImage(imagePreset, bounds); if (force || bmp == null) { if (force || bmp == null) { bmp = loadRegionBitmap(mUri, bounds); bmp = loadRegionBitmap(mUri, bounds); Loading @@ -347,12 +355,14 @@ public class ImageLoader { return bmp2; return bmp2; } } } } mLoadingLock.unlock(); return bmp; return bmp; } } // Caching method // Caching method public Bitmap getImageForPreset(ImageShow caller, ImagePreset imagePreset, public Bitmap getImageForPreset(ImageShow caller, ImagePreset imagePreset, boolean hiRes) { boolean hiRes) { mLoadingLock.lock(); if (mOriginalBitmapSmall == null) { if (mOriginalBitmapSmall == null) { return null; return null; } } Loading @@ -377,13 +387,16 @@ public class ImageLoader { mCache.addObserver(caller); mCache.addObserver(caller); } } } } mLoadingLock.unlock(); return filteredImage; return filteredImage; } } public void resetImageForPreset(ImagePreset imagePreset, ImageShow caller) { public void resetImageForPreset(ImagePreset imagePreset, ImageShow caller) { mLoadingLock.lock(); mHiresCache.reset(imagePreset); mHiresCache.reset(imagePreset); mCache.reset(imagePreset); mCache.reset(imagePreset); mZoomCache.reset(imagePreset); mZoomCache.reset(imagePreset); mLoadingLock.unlock(); } } public void saveImage(ImagePreset preset, final FilterShowActivity filterShowActivity, public void saveImage(ImagePreset preset, final FilterShowActivity filterShowActivity, Loading