diff options
author | Puneet Lall <puneetl@google.com> | 2015-02-03 18:24:00 -0800 |
---|---|---|
committer | Puneet Lall <puneetl@google.com> | 2015-02-04 09:52:35 -0800 |
commit | e606c4d68b74293e7d7725aecbaa9c915751cd43 (patch) | |
tree | 0a04e069dedc57ec689e00a6ab34801679a73ba7 /src/com/android/camera/settings/SettingObserver.java | |
parent | 983fbebe0cbcedb6e4515f4240ec2d6034e4a7d9 (diff) | |
download | android_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.java | 20 |
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; } |