# HG changeset patch # User Carl Byington # Date 1414784409 25200 # Node ID 09c1d3aae3f0c28ad4d9bdf7da4712f73a252efc # Parent 76efe8fa29b9384bd23a6f3ba5ba6d339fe87fd4 updateDirty before testChanged, try to eliminate sending duplicate screenChanged to the monitor diff -r 76efe8fa29b9 -r 09c1d3aae3f0 src/com/five_ten_sg/connectbot/service/TerminalMonitor.java --- a/src/com/five_ten_sg/connectbot/service/TerminalMonitor.java Fri Oct 31 08:58:00 2014 -0700 +++ b/src/com/five_ten_sg/connectbot/service/TerminalMonitor.java Fri Oct 31 12:40:09 2014 -0700 @@ -42,6 +42,21 @@ public static final char MONITOR_CMD_SWITCHSESSION = 10; public static final char MONITOR_CMD_CURSORREQUEST = 11; + public static final String[] commands = { + "cmd_init", + "cmd_activate", + "cmd_keystate", + "cmd_cursormove", + "cmd_screenchange", + "cmd_fieldvalue/setfield", + "cmd_getfield", + "cmd_screenwatch", + "cmd_depress", + "cmd_showurl", + "cmd_switchsession", + "cmd_cursorrequest" + }; + public static final char CURSOR_REQUESTED = 0; public static final char CURSOR_SCREEN_CHANGE = 1; public static final char CURSOR_USER_KEY = 2; @@ -330,8 +345,9 @@ if (monitor_out != null) { c[0] = (char)(c.length - 1); // number of chars following c[1] = cmd; - //Log.i(TAG, String.format("sending %d command", (int)cmd)); + Log.i(TAG, String.format("sending %s", commands[cmd])); monitor_out.write(charsToBytes(c)); + monitor_out.flush(); } else { c[1] = cmd; diff -r 76efe8fa29b9 -r 09c1d3aae3f0 src/org/tn5250j/framework/tn5250/Screen5250.java --- a/src/org/tn5250j/framework/tn5250/Screen5250.java Fri Oct 31 08:58:00 2014 -0700 +++ b/src/org/tn5250j/framework/tn5250/Screen5250.java Fri Oct 31 12:40:09 2014 -0700 @@ -3450,7 +3450,7 @@ private void xx_flush() { if (xx_length > 0) { char[] p = new char[xx_length]; - System.arraycopy(xx_pending, 0, p, xx_length); + System.arraycopy(xx_pending, 0, p, 0, xx_length); Log.i(TAG, String.format("row %d col %d %s", getRow(xx_position), getCol(xx_position), new String(p))); } xx_length = 0; diff -r 76efe8fa29b9 -r 09c1d3aae3f0 src/org/tn5250j/framework/tn5250/tnvt.java --- a/src/org/tn5250j/framework/tn5250/tnvt.java Fri Oct 31 08:58:00 2014 -0700 +++ b/src/org/tn5250j/framework/tn5250/tnvt.java Fri Oct 31 12:40:09 2014 -0700 @@ -167,7 +167,6 @@ private boolean pendingUnlock = false; private boolean[] dataIncluded; protected ICodePage codePage; - private boolean firstScreen; private String sslType; private WTDSFParser sfParser; private TerminalBridge bridge; @@ -362,8 +361,7 @@ if (bout != null) bout.close(); - connected = false; - firstScreen = false; + connected = false; // WVL - LDC : TR.000345 : properly disconnect and clear screen // Is this the right place to set screen realestate on disconnect? //controller.getScreen().clearAll(); @@ -821,6 +819,7 @@ screen52.getOIA().setInputInhibited(ScreenOIA.INPUTINHIBITED_NOTINHIBITED, ScreenOIA.OIA_LEVEL_INPUT_INHIBITED); invited = true; + screen52.updateDirty(); buffer.testChanged(); } @@ -972,6 +971,7 @@ Object e = dsq.take(); if ((e instanceof Integer) && ((Integer)e == 0)) { + screen52.updateDirty(); buffer.testChanged(); continue; }; @@ -1011,12 +1011,6 @@ Log.d(TAG, "Put/Get Operation"); parseIncoming(); setInvited(); - - if (!firstScreen) { - firstScreen = true; - //controller.fireSessionChanged(TN5250jConstants.STATE_CONNECTED); - } - break; case 4: