diff options
author | Eino-Ville Talvala <etalvala@google.com> | 2014-03-25 19:01:45 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2014-03-25 19:01:45 +0000 |
commit | 1555cec2e5452c6d4583dfd3deffbb28ebd886fe (patch) | |
tree | faa3344bc52821dff15cb3dba229f7e69fc8d3d5 /core/java/android/hardware | |
parent | 74e19f572a598ce907661ed2f5127319f8d7c635 (diff) | |
parent | ecad0541a6e90b98ad96456c4e6992121ee8a789 (diff) | |
download | frameworks_base-1555cec2e5452c6d4583dfd3deffbb28ebd886fe.zip frameworks_base-1555cec2e5452c6d4583dfd3deffbb28ebd886fe.tar.gz frameworks_base-1555cec2e5452c6d4583dfd3deffbb28ebd886fe.tar.bz2 |
am ecad0541: Merge "DO NOT MERGE: camera: Fix setParameters for Preview FPS single/range values" into klp-dev
* commit 'ecad0541a6e90b98ad96456c4e6992121ee8a789':
DO NOT MERGE: camera: Fix setParameters for Preview FPS single/range values
Diffstat (limited to 'core/java/android/hardware')
-rw-r--r-- | core/java/android/hardware/Camera.java | 30 |
1 files changed, 26 insertions, 4 deletions
diff --git a/core/java/android/hardware/Camera.java b/core/java/android/hardware/Camera.java index feb47aa..5178901 100644 --- a/core/java/android/hardware/Camera.java +++ b/core/java/android/hardware/Camera.java @@ -45,6 +45,7 @@ import java.io.IOException; import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.List; import java.util.concurrent.locks.ReentrantLock; @@ -2150,10 +2151,20 @@ public class Camera { private static final String PIXEL_FORMAT_JPEG = "jpeg"; private static final String PIXEL_FORMAT_BAYER_RGGB = "bayer-rggb"; - private HashMap<String, String> mMap; + /** + * Order matters: Keys that are {@link #set(String, String) set} later + * will take precedence over keys that are set earlier (if the two keys + * conflict with each other). + * + * <p>One example is {@link #setPreviewFpsRange(int, int)} , since it + * conflicts with {@link #setPreviewFrameRate(int)} whichever key is set later + * is the one that will take precedence. + * </p> + */ + private final LinkedHashMap<String, String> mMap; private Parameters() { - mMap = new HashMap<String, String>(64); + mMap = new LinkedHashMap<String, String>(/*initialCapacity*/64); } /** @@ -2233,7 +2244,7 @@ public class Camera { return; } - mMap.put(key, value); + put(key, value); } /** @@ -2243,7 +2254,18 @@ public class Camera { * @param value the int value of the parameter */ public void set(String key, int value) { - mMap.put(key, Integer.toString(value)); + put(key, Integer.toString(value)); + } + + private void put(String key, String value) { + /* + * Remove the key if it already exists. + * + * This way setting a new value for an already existing key will always move + * that key to be ordered the latest in the map. + */ + mMap.remove(key); + mMap.put(key, value); } private void set(String key, List<Area> areas) { |