massive performance improvements. zrle measured at 2.5x faster (no measurements for tight, but should be the same or better).
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@4742 3789f03b-4d11-0410-bbf8-ca57d06f2519
diff --git a/java/com/tigervnc/rdr/JavaInStream.java b/java/com/tigervnc/rdr/JavaInStream.java
index 5c35036..d2eda52 100644
--- a/java/com/tigervnc/rdr/JavaInStream.java
+++ b/java/com/tigervnc/rdr/JavaInStream.java
@@ -32,6 +32,7 @@
bufSize = bufSize_;
b = new byte[bufSize];
ptr = end = offset = 0;
+ timing = false;
timeWaitedIn100us = 5;
timedKbits = 0;
}
@@ -108,12 +109,17 @@
}
private int read(byte[] buf, int bufPtr, int len, boolean wait) {
- try {
long before = 0;
if (timing)
before = System.nanoTime();
- int n = jis.read(buf, bufPtr, len);
+ int n = -1;
+ try {
+ n = jis.read(buf, bufPtr, len);
+ } catch (java.io.IOException e) {
+ throw new IOException(e);
+ }
+
if (n < 0) throw new EndOfStream();
if (timing) {
@@ -123,8 +129,11 @@
// limit rate to between 10kbit/s and 40Mbit/s
- if (newTimeWaited > newKbits*1000) newTimeWaited = newKbits*1000;
- if (newTimeWaited < newKbits/4) newTimeWaited = newKbits/4;
+ if (newTimeWaited > newKbits*1000) {
+ newTimeWaited = newKbits*1000;
+ } else if (newTimeWaited < newKbits/4) {
+ newTimeWaited = newKbits/4;
+ }
timeWaitedIn100us += newTimeWaited;
timedKbits += newKbits;
@@ -132,9 +141,6 @@
return n;
- } catch (java.io.IOException e) {
- throw new IOException(e);
- }
}
private int read(byte[] buf, int bufPtr, int len) { return read(buf, bufPtr, len, true); }