aboutsummaryrefslogtreecommitdiffstats
path: root/app/src/main/java/org/connectbot/service
diff options
context:
space:
mode:
authorJeremy Klein <jlklein@google.com>2015-08-13 15:01:22 -0700
committerJeremy Klein <jlklein@google.com>2015-08-13 15:04:55 -0700
commitb067b78b004f8dd2607fe1acea0e7ec47e108212 (patch)
tree4f691fd88427d99aab832d829b5b318d4b5c7e9b /app/src/main/java/org/connectbot/service
parent5b96ac07b94c4f2c8e4ffa6862b2c5693965a96d (diff)
downloadconnectbot-b067b78b004f8dd2607fe1acea0e7ec47e108212.tar.gz
connectbot-b067b78b004f8dd2607fe1acea0e7ec47e108212.tar.bz2
connectbot-b067b78b004f8dd2607fe1acea0e7ec47e108212.zip
Call the bridge disconnect listener sychronously on the main thread.
This resolves an issue with the adapter count changing without notifyDataSetChanged being called before layout.
Diffstat (limited to 'app/src/main/java/org/connectbot/service')
-rw-r--r--app/src/main/java/org/connectbot/service/TerminalBridge.java15
-rw-r--r--app/src/main/java/org/connectbot/service/TerminalManager.java13
2 files changed, 19 insertions, 9 deletions
diff --git a/app/src/main/java/org/connectbot/service/TerminalBridge.java b/app/src/main/java/org/connectbot/service/TerminalBridge.java
index 6333c17..f7be0ae 100644
--- a/app/src/main/java/org/connectbot/service/TerminalBridge.java
+++ b/app/src/main/java/org/connectbot/service/TerminalBridge.java
@@ -456,8 +456,19 @@ public class TerminalBridge implements VDUDisplay {
awaitingClose = true;
// Tell the TerminalManager that we can be destroyed now.
- if (disconnectListener != null)
- disconnectListener.onDisconnected(TerminalBridge.this);
+ if (disconnectListener != null) {
+ // The disconnect listener should be run on the main thread if possible.
+ if (parent != null) {
+ parent.post(new Runnable() {
+ @Override
+ public void run() {
+ disconnectListener.onDisconnected(TerminalBridge.this);
+ }
+ });
+ } else {
+ disconnectListener.onDisconnected(TerminalBridge.this);
+ }
+ }
}
}
});
diff --git a/app/src/main/java/org/connectbot/service/TerminalManager.java b/app/src/main/java/org/connectbot/service/TerminalManager.java
index 8001561..a15dff0 100644
--- a/app/src/main/java/org/connectbot/service/TerminalManager.java
+++ b/app/src/main/java/org/connectbot/service/TerminalManager.java
@@ -54,9 +54,7 @@ import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.net.Uri;
import android.os.Binder;
-import android.os.Handler;
import android.os.IBinder;
-import android.os.Message;
import android.os.Vibrator;
import android.preference.PreferenceManager;
import android.util.Log;
@@ -81,7 +79,7 @@ public class TerminalManager extends Service implements BridgeDisconnectedListen
public List<HostBean> disconnected = new LinkedList<HostBean>();
- public Handler disconnectHandler = null;
+ public BridgeDisconnectedListener disconnectListener = null;
public Map<String, KeyHolder> loadedKeypairs = new HashMap<String, KeyHolder>();
@@ -329,6 +327,7 @@ public class TerminalManager extends Service implements BridgeDisconnectedListen
*/
public void onDisconnected(TerminalBridge bridge) {
boolean shouldHideRunningNotification = false;
+ Log.d(TAG, "Bridge Disconnected. Removing it.");
synchronized (bridges) {
// remove this bridge from our list
@@ -345,6 +344,10 @@ public class TerminalManager extends Service implements BridgeDisconnectedListen
mPendingReconnect.size() == 0) {
shouldHideRunningNotification = true;
}
+
+ // pass notification back up to gui
+ if (disconnectListener != null)
+ disconnectListener.onDisconnected(bridge);
}
synchronized (disconnected) {
@@ -354,10 +357,6 @@ public class TerminalManager extends Service implements BridgeDisconnectedListen
if (shouldHideRunningNotification) {
ConnectionNotifier.getInstance().hideRunningNotification(this);
}
-
- // pass notification back up to gui
- if (disconnectHandler != null)
- Message.obtain(disconnectHandler, -1, bridge).sendToTarget();
}
public boolean isKeyLoaded(String nickname) {