summaryrefslogtreecommitdiffstats
path: root/src/com/android/camera/settings/SettingObserver.java
diff options
context:
space:
mode:
authorPuneet Lall <puneetl@google.com>2015-02-03 18:24:00 -0800
committerPuneet Lall <puneetl@google.com>2015-02-04 09:52:35 -0800
commite606c4d68b74293e7d7725aecbaa9c915751cd43 (patch)
tree0a04e069dedc57ec689e00a6ab34801679a73ba7 /src/com/android/camera/settings/SettingObserver.java
parent983fbebe0cbcedb6e4515f4240ec2d6034e4a7d9 (diff)
downloadandroid_packages_apps_Camera2-e606c4d68b74293e7d7725aecbaa9c915751cd43.tar.gz
android_packages_apps_Camera2-e606c4d68b74293e7d7725aecbaa9c915751cd43.tar.bz2
android_packages_apps_Camera2-e606c4d68b74293e7d7725aecbaa9c915751cd43.zip
Change/simplify Observable interface
Previously, the Observable interface allowed registering callbacks to receive each update to a value, in a thread-safe way. However, this adds unnecessary complexity and greatly complicates the implementation of callbacks to track the camera ready-state. Replacing Callback<T> with Runnables, which can simply call Observable.get() to retrieve the latest value makes implementing ready-state significantly simpler. Bug: 18934542 Change-Id: I00d512f3c380148c0e9cb52352b2f304494e5e5a
Diffstat (limited to 'src/com/android/camera/settings/SettingObserver.java')
-rw-r--r--src/com/android/camera/settings/SettingObserver.java20
1 files changed, 8 insertions, 12 deletions
diff --git a/src/com/android/camera/settings/SettingObserver.java b/src/com/android/camera/settings/SettingObserver.java
index a38f3aff9..8d68cbfcf 100644
--- a/src/com/android/camera/settings/SettingObserver.java
+++ b/src/com/android/camera/settings/SettingObserver.java
@@ -20,8 +20,6 @@ import com.android.camera.async.ExecutorCallback;
import com.android.camera.async.FilteredUpdatable;
import com.android.camera.async.Observable;
import com.android.camera.async.SafeCloseable;
-import com.android.camera.async.Updatable;
-import com.android.camera.util.Callback;
import java.util.concurrent.Executor;
@@ -36,18 +34,17 @@ import javax.annotation.concurrent.ThreadSafe;
@ThreadSafe
public final class SettingObserver<T> implements Observable<T> {
private class Listener implements SettingsManager.OnSettingChangedListener, SafeCloseable {
- private final Updatable<? super T> mCallback;
+ private final Runnable mRunnable;
+ private final Executor mExecutor;
- private Listener(Updatable<? super T> callback) {
- mCallback = callback;
+ private Listener(Runnable runnable, Executor executor) {
+ mRunnable = runnable;
+ mExecutor = executor;
}
@Override
public void onSettingChanged(SettingsManager settingsManager, String key) {
- T t = get();
- if (t != null) {
- mCallback.update(t);
- }
+ mExecutor.execute(mRunnable);
}
@Override
@@ -89,9 +86,8 @@ public final class SettingObserver<T> implements Observable<T> {
@CheckReturnValue
@Nonnull
@Override
- public SafeCloseable addCallback(@Nonnull Callback<T> callback, @Nonnull Executor executor) {
- final Listener listener =
- new Listener(new FilteredUpdatable<>(new ExecutorCallback<>(callback, executor)));
+ public SafeCloseable addCallback(@Nonnull Runnable callback, @Nonnull Executor executor) {
+ Listener listener = new Listener(callback, executor);
mSettingsManager.addListener(listener);
return listener;
}