summaryrefslogtreecommitdiffstats
path: root/src/com/android/gallery3d/data/DataManager.java
diff options
context:
space:
mode:
authorOwen Lin <owenlin@google.com>2012-09-04 16:53:42 +0800
committerOwen Lin <owenlin@google.com>2012-09-11 12:21:59 +0800
commit676d4762496eddae66930c6f8b0bae22a22b3ef6 (patch)
tree0dff10f4ec52047f90055f76572f09038acfb94b /src/com/android/gallery3d/data/DataManager.java
parentd9473d49b311306196327cc3083696911e857df3 (diff)
downloadandroid_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.java41
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;
}
}