Bladeren bron

Merge "pull-request/412" (ramondeklein/noVNC)

Closes #412
Solly Ross 10 jaren geleden
bovenliggende
commit
1f84c99938
2 gewijzigde bestanden met toevoegingen van 27 en 2 verwijderingen
  1. 1 2
      include/rfb.js
  2. 26 0
      tests/test.rfb.js

+ 1 - 2
include/rfb.js

@@ -1496,8 +1496,7 @@ var RFB;
                         // Weird: ignore blanks are RAW
                         Util.Debug("     Ignoring blank after RAW");
                     } else {
-                        this._display.fillRect(x, y, w, h, rQ, rQi);
-                        rQi += this._FBU.bytes - 1;
+                        this._display.fillRect(x, y, w, h, FBU.background);
                     }
                 } else if (this._FBU.subencoding & 0x01) {  // Raw
                     this._display.blitImage(x, y, w, h, rQ, rQi);

+ 26 - 0
tests/test.rfb.js

@@ -1312,6 +1312,32 @@ describe('Remote Frame Buffer Protocol Client', function() {
                         expect(client._display).to.have.displayed(new Uint8Array(expected));
                     });
 
+                    it('should handle a tile with only bg specified and an empty frame afterwards', function () {
+                        // set the width so we can have two tiles
+                        client._fb_width = 8;
+                        client._display._fb_width = 8;
+                        client._display._viewportLoc.w = 8;
+
+                        var info = [{ x: 0, y: 0, width: 8, height: 4, encoding: 0x05 }];
+
+                        var rect = [];
+
+                        // send a bg frame
+                        rect.push(0x02);
+                        rect.push32(0xff00ff); // becomes 00ff00ff --> #00FF00 bg color
+
+                        // send an empty frame
+                        rect.push(0x00);
+
+                        send_fbu_msg(info, [rect], client);
+
+                        var expected = [];
+                        var i;
+                        for (i = 0; i < 16; i++) { expected.push32(0xff00ff); }     // rect 1: solid
+                        for (i = 0; i < 16; i++) { expected.push32(0xff00ff); }    // rect 2: same bkground color
+                        expect(client._display).to.have.displayed(new Uint8Array(expected));
+                    });
+
                     it('should handle a tile with bg and coloured subrects', function () {
                         var info = [{ x: 0, y: 0, width: 4, height: 4, encoding: 0x05 }];
                         var rect = [];