diff options
author | Ruben Brunk <rubenbrunk@google.com> | 2012-11-28 17:05:44 -0800 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2012-11-28 17:05:44 -0800 |
commit | f94d5c38e57d6ab563f801ea1de7ccea5cd4d94a (patch) | |
tree | a05ba3b96c702bf32afc6f521d3d0bb72f26c99a /src/com/android/gallery3d/filtershow/cache | |
parent | c604eacfeaea2845b3848ac341f47bc41af6d132 (diff) | |
parent | 9174643f1e0004e7240ed4d49877dc207c47acf3 (diff) | |
download | android_packages_apps_Snap-f94d5c38e57d6ab563f801ea1de7ccea5cd4d94a.tar.gz android_packages_apps_Snap-f94d5c38e57d6ab563f801ea1de7ccea5cd4d94a.tar.bz2 android_packages_apps_Snap-f94d5c38e57d6ab563f801ea1de7ccea5cd4d94a.zip |
am 7a36d427: Merge "Added locking to ImageLoader." into gb-ub-photos-arches
* commit '7a36d4275ea0375d4e6a940cc3307dbe716cf85c':
Added locking to ImageLoader.
Diffstat (limited to 'src/com/android/gallery3d/filtershow/cache')
-rw-r--r-- | src/com/android/gallery3d/filtershow/cache/ImageLoader.java | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/com/android/gallery3d/filtershow/cache/ImageLoader.java b/src/com/android/gallery3d/filtershow/cache/ImageLoader.java index 7874881fa..cd1cc27ef 100644 --- a/src/com/android/gallery3d/filtershow/cache/ImageLoader.java +++ b/src/com/android/gallery3d/filtershow/cache/ImageLoader.java @@ -54,6 +54,7 @@ import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.util.Vector; +import java.util.concurrent.locks.ReentrantLock; public class ImageLoader { @@ -87,6 +88,8 @@ public class ImageLoader { private Rect mOriginalBounds = null; private static int mZoomOrientation = ORI_NORMAL; + private ReentrantLock mLoadingLock = new ReentrantLock(); + public ImageLoader(FilterShowActivity activity, Context context) { mActivity = activity; mContext = context; @@ -103,6 +106,7 @@ public class ImageLoader { } public void loadBitmap(Uri uri,int size) { + mLoadingLock.lock(); mUri = uri; mOrientation = getOrientation(mContext, uri); mOriginalBitmapSmall = loadScaledBitmap(uri, 160); @@ -112,6 +116,7 @@ public class ImageLoader { } mOriginalBitmapLarge = loadScaledBitmap(uri, size); updateBitmaps(); + mLoadingLock.unlock(); } public Uri getUri() { @@ -327,10 +332,12 @@ public class ImageLoader { } public void addListener(ImageShow imageShow) { + mLoadingLock.lock(); if (!mListeners.contains(imageShow)) { mListeners.add(imageShow); } mHiresCache.addObserver(imageShow); + mLoadingLock.unlock(); } private void warnListeners() { @@ -352,6 +359,7 @@ public class ImageLoader { // move this to a background thread. public Bitmap getScaleOneImageForPreset(ImageShow caller, ImagePreset imagePreset, Rect bounds, boolean force) { + mLoadingLock.lock(); Bitmap bmp = mZoomCache.getImage(imagePreset, bounds); if (force || bmp == null) { bmp = loadRegionBitmap(mUri, bounds); @@ -366,12 +374,14 @@ public class ImageLoader { return bmp2; } } + mLoadingLock.unlock(); return bmp; } // Caching method public Bitmap getImageForPreset(ImageShow caller, ImagePreset imagePreset, boolean hiRes) { + mLoadingLock.lock(); if (mOriginalBitmapSmall == null) { return null; } @@ -396,13 +406,16 @@ public class ImageLoader { mCache.addObserver(caller); } } + mLoadingLock.unlock(); return filteredImage; } public void resetImageForPreset(ImagePreset imagePreset, ImageShow caller) { + mLoadingLock.lock(); mHiresCache.reset(imagePreset); mCache.reset(imagePreset); mZoomCache.reset(imagePreset); + mLoadingLock.unlock(); } public void saveImage(ImagePreset preset, final FilterShowActivity filterShowActivity, |