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 | bf9c431d8d863f7ffb54c984ed9801079be6d0f6 (patch) | |
| tree | c9eeca677487d0951f00fb82ef1d20f60bcbcdbe /src | |
| parent | 369e4caf10e7352123a4e73b36810f2b0f865ec0 (diff) | |
| parent | 7a36d4275ea0375d4e6a940cc3307dbe716cf85c (diff) | |
| download | android_packages_apps_Gallery2-bf9c431d8d863f7ffb54c984ed9801079be6d0f6.tar.gz android_packages_apps_Gallery2-bf9c431d8d863f7ffb54c984ed9801079be6d0f6.tar.bz2 android_packages_apps_Gallery2-bf9c431d8d863f7ffb54c984ed9801079be6d0f6.zip | |
am 7a36d427: Merge "Added locking to ImageLoader." into gb-ub-photos-arches
* commit '7a36d4275ea0375d4e6a940cc3307dbe716cf85c':
Added locking to ImageLoader.
Diffstat (limited to 'src')
| -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, |
