Mercurial > hg > Applications > tvnjviewer
comparison src/main/java/com/glavsoft/rfb/encoding/decoder/ZRLEDecoder.java @ 12:0415badf417f
bug fix (ArrayIndexOutOfBoundsException)
author | YU |
---|---|
date | Tue, 23 Sep 2014 16:23:44 +0900 |
parents | 9abf7f305bac |
children | 61d95bdc2bdb |
comparison
equal
deleted
inserted
replaced
11:f9e319a08111 | 12:0415badf417f |
---|---|
44 byte[] bytes = unzip(reader, zippedLength, length); | 44 byte[] bytes = unzip(reader, zippedLength, length); |
45 int offset = zippedLength; | 45 int offset = zippedLength; |
46 | 46 |
47 AliceVNCMessage message = new AliceVNCMessage(); | 47 AliceVNCMessage message = new AliceVNCMessage(); |
48 message.setRectangle(rect); | 48 message.setRectangle(rect); |
49 message.unzip = bytes; | 49 message.buf = bytes.clone(); |
50 message.offset = offset; | 50 message.offset = offset; |
51 DataSegment.getLocal().put("aliceVNCMessage", message); | 51 DataSegment.getLocal().put("aliceVNCMessage", message); |
52 | |
53 setColorDataOnRenderer(renderer, rect, bytes, offset); | 52 setColorDataOnRenderer(renderer, rect, bytes, offset); |
54 } | 53 } |
55 | 54 |
56 private void setColorDataOnRenderer(Renderer renderer, | 55 public void setColorDataOnRenderer(Renderer renderer, |
57 FramebufferUpdateRectangle rect, byte[] bytes, int offset) | 56 FramebufferUpdateRectangle rect, byte[] bytes, int offset) |
58 throws TransportException { | 57 throws TransportException { |
59 int maxX = rect.x + rect.width; | 58 int maxX = rect.x + rect.width; |
60 int maxY = rect.y + rect.height; | 59 int maxY = rect.y + rect.height; |
61 if (null == palette) { | 60 if (null == palette) { |
176 for (int i=0; i<paletteSize; ++i) { | 175 for (int i=0; i<paletteSize; ++i) { |
177 palette[i] = renderer.getCompactPixelColor(bytes, offset + i* bytesPerCPixel); | 176 palette[i] = renderer.getCompactPixelColor(bytes, offset + i* bytesPerCPixel); |
178 } | 177 } |
179 return paletteSize * bytesPerCPixel; | 178 return paletteSize * bytesPerCPixel; |
180 } | 179 } |
181 | |
182 public void decode(AliceVNCMessage message, Renderer renderer) throws TransportException { | |
183 | |
184 FramebufferUpdateRectangle rect = new FramebufferUpdateRectangle( | |
185 message.x, message.y, message.width, message.height); | |
186 | |
187 byte[] bytes = message.unzip; | |
188 int offset = message.offset; | |
189 setColorDataOnRenderer(renderer, rect, bytes, offset); | |
190 | |
191 } | |
192 } | 180 } |