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 }