Mercurial > hg > Members > nobuyasu > tightVNCProxy
changeset 85:b384db76c28a
a little progress...
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Wed, 03 Aug 2011 07:39:43 +0900 |
parents | 704e01d2390c |
children | b7225991184b |
files | src/myVncProxy/MyRfbProto.java |
diffstat | 1 files changed, 11 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/src/myVncProxy/MyRfbProto.java Wed Aug 03 06:44:59 2011 +0900 +++ b/src/myVncProxy/MyRfbProto.java Wed Aug 03 07:39:43 2011 +0900 @@ -562,17 +562,20 @@ byte[] b = bufs.poll(); if (b[0]==RfbProto.FramebufferUpdate) { int encoding = u32(b,12); - int clen = u32(bufs.poll(),0); if (encoding==RfbProto.EncodingZlib||encoding==RfbProto.EncodingZRLE) { + int clen = u32(bufs.poll(),0); LinkedList<byte[]> outs = new LinkedList<byte[]>(); int len = 0, count = 0; int len2=0; - int bufSize = bufs.size(); - int bufCount = 0; - for( byte[] b1 : bufs) { - if (++bufCount > bufSize) + //int bufSize = bufs.size(); + //int bufCount = 0; + deflater.reset(); + do { + byte[] b1 = bufs.poll(); + if (bufs.size()==0) { deflater.setInput(b1,0,clen); - else + deflater.finish(); + } else deflater.setInput(b1); int len1=0; do { @@ -585,7 +588,7 @@ len += len1; } } while (len1 > 0); - } + } while(bufs.size()>0); byte[] blen = castIntByte(len); outs.addFirst(blen); outs.addFirst(b); @@ -600,6 +603,7 @@ } else { os.write(b, 0, b.length); } + os.flush(); } } catch (IOException e) { /**