summaryrefslogtreecommitdiff
path: root/app/src/main/java/de/danoeh/antennapod
diff options
context:
space:
mode:
authorDomingos Lopes <domingos86lopes+github@gmail.com>2016-04-19 00:05:55 -0400
committerDomingos Lopes <domingos86lopes+github@gmail.com>2016-04-24 22:06:27 -0400
commit3a5b43a67d423afac856bd1a7384dd433acaaeb6 (patch)
tree52d4f03dd218fadacb50ccd1c8e61ea8e77d01f7 /app/src/main/java/de/danoeh/antennapod
parent78b2ceab5725ecb9f851eec58088b68bd3e6eb69 (diff)
downloadAntennaPod-3a5b43a67d423afac856bd1a7384dd433acaaeb6.zip
make the UI counter, cast preference state, resumed state synchronized
Diffstat (limited to 'app/src/main/java/de/danoeh/antennapod')
-rw-r--r--app/src/main/java/de/danoeh/antennapod/activity/CastEnabledActivity.java55
1 files changed, 28 insertions, 27 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/activity/CastEnabledActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/CastEnabledActivity.java
index d7996dd14..f7ef3de77 100644
--- a/app/src/main/java/de/danoeh/antennapod/activity/CastEnabledActivity.java
+++ b/app/src/main/java/de/danoeh/antennapod/activity/CastEnabledActivity.java
@@ -27,9 +27,10 @@ public abstract class CastEnabledActivity extends AppCompatActivity
public static final String TAG = "CastEnabledActivity";
protected CastManager mCastManager;
- private volatile int castUICounter;
+ private final Object UI_COUNTER_LOCK = new Object();
+ private volatile boolean isResumed = false;
protected SwitchableMediaRouteActionProvider mMediaRouteActionProvider;
- protected volatile boolean isCastEnabled;
+ protected volatile boolean isCastEnabled = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -38,7 +39,6 @@ public abstract class CastEnabledActivity extends AppCompatActivity
PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).
registerOnSharedPreferenceChangeListener(this);
- castUICounter = 0;
mCastManager = CastManager.getInstance();
mCastManager.addCastConsumer(castConsumer);
isCastEnabled = UserPreferences.isCastEnabled();
@@ -72,43 +72,44 @@ public abstract class CastEnabledActivity extends AppCompatActivity
@Override
protected void onResume() {
super.onResume();
- castUICounter++;
- if (isCastEnabled) {
- mCastManager.incrementUiCounter();
- castUICounter++;
+ synchronized (UI_COUNTER_LOCK) {
+ isResumed = true;
+ if (isCastEnabled) {
+ mCastManager.incrementUiCounter();
+ }
}
}
@Override
protected void onPause() {
super.onPause();
- castUICounter--;
- if (isCastEnabled) {
- mCastManager.decrementUiCounter();
- castUICounter--;
+ synchronized (UI_COUNTER_LOCK) {
+ isResumed = false;
+ if (isCastEnabled) {
+ mCastManager.decrementUiCounter();
+ }
}
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
if (UserPreferences.PREF_CAST_ENABLED.equals(key)) {
- isCastEnabled = UserPreferences.isCastEnabled();
- Log.d(TAG, "onSharedPreferenceChanged(), isCastEnabled set to " + isCastEnabled);
- mMediaRouteActionProvider.setEnabled(isCastEnabled);
- if (isCastEnabled) {
- //Test if activity is resumed but without UI counter incremented
- if (castUICounter==1) {
- mCastManager.incrementUiCounter();
- castUICounter++;
- }
- } else {
- if (castUICounter > 1) {
- mCastManager.decrementUiCounter();
- castUICounter--;
- }
- if (!PlaybackService.isRunning) {
- CastManager.getInstance().disconnect();
+ boolean newValue = UserPreferences.isCastEnabled();
+ Log.d(TAG, "onSharedPreferenceChanged(), isCastEnabled set to " + newValue);
+ synchronized (UI_COUNTER_LOCK) {
+ if (isCastEnabled != newValue && isResumed) {
+ if (newValue) {
+ mCastManager.incrementUiCounter();
+ } else {
+ mCastManager.decrementUiCounter();
+ }
}
+ isCastEnabled = newValue;
+ }
+ mMediaRouteActionProvider.setEnabled(isCastEnabled);
+ // PlaybackService has its own listener, so if it's active we don't have to take action here.
+ if (!isCastEnabled && !PlaybackService.isRunning) {
+ CastManager.getInstance().disconnect();
}
}
}