summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/vpn
diff options
context:
space:
mode:
authorHung-ying Tyan <tyanh@google.com>2009-07-13 17:23:32 +0800
committerHung-ying Tyan <tyanh@google.com>2009-07-13 17:23:32 +0800
commitfe0b0178cb2d24b8e6e1477055617bbf86a0808b (patch)
tree0f38d46f6987bac34c74daf5dda42be2f9c85c61 /src/com/android/settings/vpn
parent1ddccd07f744344b5248dd5418ee526f26d520dc (diff)
downloadpackages_apps_Settings-fe0b0178cb2d24b8e6e1477055617bbf86a0808b.zip
packages_apps_Settings-fe0b0178cb2d24b8e6e1477055617bbf86a0808b.tar.gz
packages_apps_Settings-fe0b0178cb2d24b8e6e1477055617bbf86a0808b.tar.bz2
Fix VpnSettings.StatusChecker.start()
to avoid multiple threads checking status at the same time.
Diffstat (limited to 'src/com/android/settings/vpn')
-rw-r--r--src/com/android/settings/vpn/AuthenticationActor.java2
-rw-r--r--src/com/android/settings/vpn/VpnSettings.java7
2 files changed, 5 insertions, 4 deletions
diff --git a/src/com/android/settings/vpn/AuthenticationActor.java b/src/com/android/settings/vpn/AuthenticationActor.java
index 2584fbd..a05cfa7 100644
--- a/src/com/android/settings/vpn/AuthenticationActor.java
+++ b/src/com/android/settings/vpn/AuthenticationActor.java
@@ -195,8 +195,8 @@ public class AuthenticationActor implements VpnProfileActor {
if (bindService(c)) {
// wait for a second, let status propagate
wait(c, ONE_SECOND);
+ mContext.unbindService(c);
}
- mContext.unbindService(c);
}
private boolean bindService(ServiceConnection c) {
diff --git a/src/com/android/settings/vpn/VpnSettings.java b/src/com/android/settings/vpn/VpnSettings.java
index 08dd8dd..1446164 100644
--- a/src/com/android/settings/vpn/VpnSettings.java
+++ b/src/com/android/settings/vpn/VpnSettings.java
@@ -932,7 +932,7 @@ public class VpnSettings extends PreferenceActivity implements
// managing status check in a background thread
private class StatusChecker {
private Set<VpnProfile> mQueue = new HashSet<VpnProfile>();
- private boolean mPaused;
+ private boolean mPaused = true;
private ConditionVariable mThreadCv = new ConditionVariable();
void onPause() {
@@ -941,7 +941,6 @@ public class VpnSettings extends PreferenceActivity implements
}
synchronized void onResume() {
- mPaused = false;
start();
}
@@ -961,7 +960,9 @@ public class VpnSettings extends PreferenceActivity implements
return p;
}
- private void start() {
+ private synchronized void start() {
+ if (!mPaused) return;
+ mPaused = false;
mThreadCv.close();
new Thread(new Runnable() {
public void run() {