changeset 16:48a8daea9221

delay sending cursor move notifications until the host is quiet
author Carl Byington <carl@five-ten-sg.com>
date Thu, 29 May 2014 20:15:58 -0700
parents 1588e359a972
children 02717d15de9b
files src/com/five_ten_sg/connectbot/service/TerminalMonitor.java
diffstat 1 files changed, 14 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/com/five_ten_sg/connectbot/service/TerminalMonitor.java	Thu May 29 12:40:27 2014 -0700
+++ b/src/com/five_ten_sg/connectbot/service/TerminalMonitor.java	Thu May 29 20:15:58 2014 -0700
@@ -46,7 +46,10 @@
     private int                 end_line     = 500;     // ""
     private int                 start_column = 0;       // ""
     private int                 end_column   = 500;     // ""
-    private boolean             modified     = false;   // ""
+    private boolean             modified     = false;   // used to delay screen change notifications
+    private boolean             moved        = false;   // used to delay cursor moved notifications
+    private int                 to_line      = 0;       // ""
+    private int                 to_column    = 0;       // ""
     private HashMap<Integer,Integer>  keymap = null;
     private IBinder             bound        = null;
     private Socket              monitor_socket = null;
@@ -323,6 +326,12 @@
     }
 
     public synchronized void cursorMove(int l, int c) {
+        moved = true;
+        to_line = l
+        to_column = c;
+    }
+
+    public void cursorMoved() {
         char[] arg = new char[4];
         arg[2] = (char)(l & 0x0000ffff);
         arg[3] = (char)(c & 0x0000ffff);
@@ -334,6 +343,10 @@
             modified = false;
             sendScreen(MONITOR_CMD_SCREENCHANGE);
         }
+        if (moved) {
+            moved = false;
+            cursorMoved();
+        }
     }
 
     public synchronized void screenChanged(int llow, int lhigh, int clow, int chigh) {