comparison src/main/java/com/glavsoft/rfb/encoding/decoder/ZRLEDecoder.java @ 500:6609174beafe

fix subencoding
author oshiro
date Sun, 17 Feb 2019 17:55:25 +0900
parents 5455c62a3775
children 57ee5c26e8eb
comparison
equal deleted inserted replaced
499:5455c62a3775 500:6609174beafe
70 // 2 to 16 for raw packed palette data, 130 to 255 for Palette RLE (subencoding - 128) 70 // 2 to 16 for raw packed palette data, 130 to 255 for Palette RLE (subencoding - 128)
71 int paletteSize = subencoding & 127; 71 int paletteSize = subencoding & 127;
72 offset += readPalette(bytes, offset, renderer, paletteSize); 72 offset += readPalette(bytes, offset, renderer, paletteSize);
73 if (1 == subencoding) { // A solid tile consisting of a single colour 73 if (1 == subencoding) { // A solid tile consisting of a single colour
74 renderer.fillRect(palette[0], tileX, tileY, tileWidth, tileHeight); 74 renderer.fillRect(palette[0], tileX, tileY, tileWidth, tileHeight);
75 continue; 75 } else if (isRle) {
76 }
77 if (isRle) {
78 if (0 == paletteSize) { // subencoding == 128 (or paletteSize == 0) - Plain RLE 76 if (0 == paletteSize) { // subencoding == 128 (or paletteSize == 0) - Plain RLE
79 offset += decodePlainRle(bytes, offset, renderer, tileX, tileY, tileWidth, tileHeight); 77 offset += decodePlainRle(bytes, offset, renderer, tileX, tileY, tileWidth, tileHeight);
80 } else { 78 } else {
81 offset += decodePaletteRle(bytes, offset, renderer, tileX, tileY, tileWidth, tileHeight); 79 offset += decodePaletteRle(bytes, offset, renderer, tileX, tileY, tileWidth, tileHeight);
82 } 80 }
86 // System.out.println("offset:"+offset); 84 // System.out.println("offset:"+offset);
87 } else { 85 } else {
88 offset += decodePacked(bytes, offset, renderer, paletteSize, tileX, tileY, tileWidth, tileHeight); 86 offset += decodePacked(bytes, offset, renderer, paletteSize, tileX, tileY, tileWidth, tileHeight);
89 } 87 }
90 } 88 }
91 rfbProto.multicastPut(rect, bytes, prevoffset, offset, tileWidth, tileHeight); 89 if (rfbProto != null) rfbProto.multicastPut(rect, bytes, prevoffset, offset, tileWidth, tileHeight);
92 prevoffset = offset; 90 prevoffset = offset;
93 } 91 }
94 } 92 }
95 } 93 }
96 94