diff options
author | Owen Lin <owenlin@google.com> | 2012-09-04 16:53:42 +0800 |
---|---|---|
committer | Owen Lin <owenlin@google.com> | 2012-09-11 12:21:59 +0800 |
commit | 676d4762496eddae66930c6f8b0bae22a22b3ef6 (patch) | |
tree | 0dff10f4ec52047f90055f76572f09038acfb94b /src/com/android/gallery3d/data/DataManager.java | |
parent | d9473d49b311306196327cc3083696911e857df3 (diff) | |
download | android_packages_apps_Gallery2-676d4762496eddae66930c6f8b0bae22a22b3ef6.tar.gz android_packages_apps_Gallery2-676d4762496eddae66930c6f8b0bae22a22b3ef6.tar.bz2 android_packages_apps_Gallery2-676d4762496eddae66930c6f8b0bae22a22b3ef6.zip |
Ensure peekObject is called in the syncrhonization block.
bug: 7019598
Change-Id: If153287078826afc9827ea64364b4fb64f2b3a5f
Diffstat (limited to 'src/com/android/gallery3d/data/DataManager.java')
-rw-r--r-- | src/com/android/gallery3d/data/DataManager.java | 41 |
1 files changed, 25 insertions, 16 deletions
diff --git a/src/com/android/gallery3d/data/DataManager.java b/src/com/android/gallery3d/data/DataManager.java index 0b4dae2c2..eeab8a885 100644 --- a/src/com/android/gallery3d/data/DataManager.java +++ b/src/com/android/gallery3d/data/DataManager.java @@ -156,29 +156,38 @@ public class DataManager { mSourceMap.put(source.getPrefix(), source); } + // A common usage of this method is: + // synchronized (DataManager.LOCK) { + // MediaObject object = peekMediaObject(path); + // if (object == null) { + // object = createMediaObject(...); + // } + // } public MediaObject peekMediaObject(Path path) { return path.getObject(); } public MediaObject getMediaObject(Path path) { - MediaObject obj = path.getObject(); - if (obj != null) return obj; - - MediaSource source = mSourceMap.get(path.getPrefix()); - if (source == null) { - Log.w(TAG, "cannot find media source for path: " + path); - return null; - } + synchronized (LOCK) { + MediaObject obj = path.getObject(); + if (obj != null) return obj; + + MediaSource source = mSourceMap.get(path.getPrefix()); + if (source == null) { + Log.w(TAG, "cannot find media source for path: " + path); + return null; + } - try { - MediaObject object = source.createMediaObject(path); - if (object == null) { - Log.w(TAG, "cannot create media object: " + path); + try { + MediaObject object = source.createMediaObject(path); + if (object == null) { + Log.w(TAG, "cannot create media object: " + path); + } + return object; + } catch (Throwable t) { + Log.w(TAG, "exception in creating media object: " + path, t); + return null; } - return object; - } catch (Throwable t) { - Log.w(TAG, "exception in creating media object: " + path, t); - return null; } } |