# HG changeset patch # User Carl Byington # Date 1403043221 25200 # Node ID eda03b809f48d802170ae1df61dd7da13855e640 # Parent 16e023784917df12992af690d0df518f4ca8458b move blocking test from socket read to queue take diff -r 16e023784917 -r eda03b809f48 res/values/version.xml --- a/res/values/version.xml Tue Jun 17 11:35:01 2014 -0700 +++ b/res/values/version.xml Tue Jun 17 15:13:41 2014 -0700 @@ -1,4 +1,4 @@ - 510Connectbot 1.7.2-1 (ab7313512aba+ 2014-05-29) + 510Connectbot 1.8.0-1 (16e023784917+ 2014-06-17) diff -r 16e023784917 -r eda03b809f48 src/org/tn5250j/framework/tn5250/DataStreamProducer.java --- a/src/org/tn5250j/framework/tn5250/DataStreamProducer.java Tue Jun 17 11:35:01 2014 -0700 +++ b/src/org/tn5250j/framework/tn5250/DataStreamProducer.java Tue Jun 17 15:13:41 2014 -0700 @@ -14,14 +14,11 @@ import android.util.Log; -import de.mud.terminal.vt320; - public class DataStreamProducer implements Runnable { private static final String TAG = "DataStreamProducer"; private tnvt vt; private BufferedInputStream bin; - private vt320 buffer; private ByteArrayOutputStream baosin; private Thread me; private byte[] saveStream; @@ -34,10 +31,9 @@ - public DataStreamProducer(tnvt vt, BufferedInputStream bin, vt320 buffer, BlockingQueue queue, byte[] init) { + public DataStreamProducer(tnvt vt, BufferedInputStream bin, BlockingQueue queue, byte[] init) { this.bin = bin; this.vt = vt; - this.buffer = buffer; baosin = new ByteArrayOutputStream(); dsq = queue; abyte2 = init; @@ -167,7 +163,6 @@ int i = 0; while(!done) { - if (bin.available() == 0) buffer.testChanged(); i = bin.read(); // WVL - LDC : 16/07/2003 : TR.000345 @@ -239,7 +234,6 @@ if (negotiate) { // get the negotiation option - if (bin.available() == 0) buffer.testChanged(); baosin.write(bin.read()); vt.negotiate(rBytes); diff -r 16e023784917 -r eda03b809f48 src/org/tn5250j/framework/tn5250/tnvt.java --- a/src/org/tn5250j/framework/tn5250/tnvt.java Tue Jun 17 11:35:01 2014 -0700 +++ b/src/org/tn5250j/framework/tn5250/tnvt.java Tue Jun 17 15:13:41 2014 -0700 @@ -77,7 +77,7 @@ import java.util.Properties; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingQueue; - +import java.util.concurrent.TimeUnit; import javax.net.ssl.SSLSocket; import android.content.Intent; @@ -140,6 +140,7 @@ private boolean cursorOn = false; private String hostname = ""; private int port = 23; + private vt320 buffer; private boolean connected = false; private boolean support132 = true; private ByteArrayOutputStream baosp = null; @@ -260,6 +261,7 @@ try { this.hostname = hostname; this.port = port; + this.buffer = buffer; try { screen52.getOIA().setInputInhibited(ScreenOIA.INPUTINHIBITED_SYSTEM_WAIT, @@ -298,7 +300,7 @@ } - producer = new DataStreamProducer(this, bin, buffer, dsq, abyte0); + producer = new DataStreamProducer(this, bin, dsq, abyte0); pthread = new Thread(producer); // pthread.setPriority(pthread.MIN_PRIORITY); pthread.setPriority(Thread.NORM_PRIORITY); @@ -986,7 +988,12 @@ while (keepTrucking) { try { - bk.initialize((byte[]) dsq.take()); + Object e = dsq.poll(0L, TimeUnit.SECONDS); + if (e == null) { + buffer.testChanged(); + e = dsq.take(); + }; + bk.initialize((byte[])e); } catch (InterruptedException ie) { Log.w(TAG," vt thread interrupted and stopping "); keepTrucking = false;