Fix some framing bugs. Cleanup console logs.
This commit is contained in:
parent
484a4696aa
commit
410960bac8
55
vnc.js
55
vnc.js
|
@ -33,7 +33,6 @@ Array.prototype.shiftStr = function (len) {
|
||||||
return arr.map(function (num) {
|
return arr.map(function (num) {
|
||||||
return String.fromCharCode(num); } ).join('');
|
return String.fromCharCode(num); } ).join('');
|
||||||
}
|
}
|
||||||
|
|
||||||
Array.prototype.shiftBytes = function (len) {
|
Array.prototype.shiftBytes = function (len) {
|
||||||
return this.splice(0, len);
|
return this.splice(0, len);
|
||||||
}
|
}
|
||||||
|
@ -95,7 +94,6 @@ rre_chunk : 100,
|
||||||
/* RFB/VNC initialisation */
|
/* RFB/VNC initialisation */
|
||||||
init_msg: function () {
|
init_msg: function () {
|
||||||
console.log(">> init_msg: " + RFB.state);
|
console.log(">> init_msg: " + RFB.state);
|
||||||
console.log("d:" + RFB.d);
|
|
||||||
|
|
||||||
switch (RFB.state) {
|
switch (RFB.state) {
|
||||||
|
|
||||||
|
@ -273,8 +271,8 @@ display_hextile: function() {
|
||||||
//console.log(">> display_hextile, tiles: " + FBU.tiles + ", arr.length: " + RFB.d.length + ", bytes: " + FBU.bytes);
|
//console.log(">> display_hextile, tiles: " + FBU.tiles + ", arr.length: " + RFB.d.length + ", bytes: " + FBU.bytes);
|
||||||
var subencoding, subrects, cur_tile, tile_x, x, w, tile_y, y, h;
|
var subencoding, subrects, cur_tile, tile_x, x, w, tile_y, y, h;
|
||||||
|
|
||||||
/* FBU.bytes comes in as 0, RFB.d.length at least 2 */
|
/* FBU.bytes comes in as 0, RFB.d.length at least 1 */
|
||||||
while ((FBU.tiles > 0) && (RFB.d.length >= Math.max(2, FBU.bytes))) {
|
while ((FBU.tiles > 0) && (RFB.d.length >= Math.max(1, FBU.bytes))) {
|
||||||
cur_tile = FBU.total_tiles - FBU.tiles;
|
cur_tile = FBU.total_tiles - FBU.tiles;
|
||||||
tile_x = cur_tile % FBU.tiles_x;
|
tile_x = cur_tile % FBU.tiles_x;
|
||||||
tile_y = Math.floor(cur_tile / FBU.tiles_x);
|
tile_y = Math.floor(cur_tile / FBU.tiles_x);
|
||||||
|
@ -298,7 +296,7 @@ display_hextile: function() {
|
||||||
/* Figure out how much we are expecting */
|
/* Figure out how much we are expecting */
|
||||||
if (subencoding & 0x01) { // Raw
|
if (subencoding & 0x01) { // Raw
|
||||||
//console.log(" Raw subencoding");
|
//console.log(" Raw subencoding");
|
||||||
FBU.bytes = w * h * RFB.fb_Bpp;
|
FBU.bytes += w * h * RFB.fb_Bpp;
|
||||||
} else {
|
} else {
|
||||||
if (subencoding & 0x02) { // Background
|
if (subencoding & 0x02) { // Background
|
||||||
FBU.bytes += RFB.fb_Bpp;
|
FBU.bytes += RFB.fb_Bpp;
|
||||||
|
@ -310,7 +308,7 @@ display_hextile: function() {
|
||||||
FBU.bytes++; // Since we aren't shifting it off
|
FBU.bytes++; // Since we aren't shifting it off
|
||||||
if (RFB.d.length < FBU.bytes) {
|
if (RFB.d.length < FBU.bytes) {
|
||||||
/* Wait for subrects byte */
|
/* Wait for subrects byte */
|
||||||
//console.log(" waiting for subrects byte");
|
console.log(" waiting for hextile subrects header bytes");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
subrects = RFB.d[FBU.bytes-1]; // Peek
|
subrects = RFB.d[FBU.bytes-1]; // Peek
|
||||||
|
@ -323,10 +321,10 @@ display_hextile: function() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log(" tile:" + cur_tile + "/" + (FBU.total_tiles - 1) + ", subencoding:" + subencoding + "(last: " + FBU.lastsubencoding + "), subrects:" + subrects + ", tile:" + tile_x + "," + tile_y + " [" + x + "," + y + "], arr.length:" + RFB.d.length + ", bytes:" + FBU.bytes);
|
//console.log(" tile:" + cur_tile + "/" + (FBU.total_tiles - 1) + ", subencoding:" + subencoding + "(last: " + FBU.lastsubencoding + "), subrects:" + subrects + ", tile:" + tile_x + "," + tile_y + " [" + x + "," + y + "]@" + w + "x" + h + ", arr.length:" + RFB.d.length + ", bytes:" + FBU.bytes);
|
||||||
//console.log(" arr[0..30]: " + RFB.d.slice(0,30));
|
//console.log(" arr[0..30]: " + RFB.d.slice(0,30));
|
||||||
if (RFB.d.length < FBU.bytes) {
|
if (RFB.d.length < FBU.bytes) {
|
||||||
//console.log(" waiting for " + (FBU.bytes - RFB.d.length) + "bytes");
|
//console.log(" waiting for " + (FBU.bytes - RFB.d.length) + " hextile bytes");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -390,7 +388,7 @@ display_hextile: function() {
|
||||||
FBU.rects --;
|
FBU.rects --;
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log("<< display_hextile, rects:" + FBU.rects, " d:" + RFB.d.slice(0,40));
|
//console.log("<< display_hextile, rects:" + FBU.rects, " d:" + RFB.d.slice(0,40));
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
|
@ -405,31 +403,41 @@ normal_msg: function () {
|
||||||
switch (msg_type) {
|
switch (msg_type) {
|
||||||
case 0: // FramebufferUpdate
|
case 0: // FramebufferUpdate
|
||||||
if (FBU.rects == 0) {
|
if (FBU.rects == 0) {
|
||||||
|
if (RFB.d.length < 3) {
|
||||||
|
console.log(" waiting for FBU header bytes");
|
||||||
|
return;
|
||||||
|
}
|
||||||
RFB.d.shift8();
|
RFB.d.shift8();
|
||||||
FBU.rects = RFB.d.shift16();
|
FBU.rects = RFB.d.shift16();
|
||||||
console.log("FramebufferUpdate, " + FBU.rects + " rects");
|
//console.log("FramebufferUpdate, rects:" + FBU.rects);
|
||||||
FBU.bytes = 0;
|
FBU.bytes = 0;
|
||||||
} else {
|
|
||||||
//console.log("FramebufferUpdate continuation");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
while ((FBU.rects > 0) && (RFB.d.length > 0)) {
|
while ((FBU.rects > 0) && (RFB.d.length > 0)) {
|
||||||
if (FBU.bytes == 0) {
|
if (FBU.bytes == 0) {
|
||||||
|
if (RFB.d.length < 12) {
|
||||||
|
console.log(" waiting for rect header bytes");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
/* New FramebufferUpdate */
|
||||||
FBU.x = RFB.d.shift16();
|
FBU.x = RFB.d.shift16();
|
||||||
FBU.y = RFB.d.shift16();
|
FBU.y = RFB.d.shift16();
|
||||||
FBU.width = RFB.d.shift16();
|
FBU.width = RFB.d.shift16();
|
||||||
FBU.height = RFB.d.shift16();
|
FBU.height = RFB.d.shift16();
|
||||||
FBU.encoding = parseInt(RFB.d.shift32(), 10);
|
FBU.encoding = parseInt(RFB.d.shift32(), 10);
|
||||||
console.log("encoding: " + FBU.encoding);
|
//var msg = "FramebufferUpdate rects:" + FBU.rects + " encoding:" + FBU.encoding
|
||||||
switch (FBU.encoding) {
|
switch (FBU.encoding) {
|
||||||
case 0: // Raw
|
case 0: // Raw
|
||||||
FBU.bytes = FBU.width * FBU.height * RFB.fb_Bpp;
|
FBU.bytes = FBU.width * FBU.height * RFB.fb_Bpp;
|
||||||
|
//msg += "(RAW)"
|
||||||
break;
|
break;
|
||||||
case 1: // Copy-Rect
|
case 1: // Copy-Rect
|
||||||
FBU.bytes = 4;
|
FBU.bytes = 4;
|
||||||
|
//msg += "(COPY-RECT)"
|
||||||
break;
|
break;
|
||||||
case 2: // RRE
|
case 2: // RRE
|
||||||
FBU.bytes = 4 + RFB.fb_Bpp;
|
FBU.bytes = 4 + RFB.fb_Bpp;
|
||||||
|
//msg += "(RRE)"
|
||||||
break;
|
break;
|
||||||
case 5: // hextile
|
case 5: // hextile
|
||||||
FBU.bytes = 2; // No header; get it started
|
FBU.bytes = 2; // No header; get it started
|
||||||
|
@ -437,17 +445,18 @@ normal_msg: function () {
|
||||||
FBU.tiles_y = Math.ceil(FBU.height/16);
|
FBU.tiles_y = Math.ceil(FBU.height/16);
|
||||||
FBU.total_tiles = FBU.tiles_x * FBU.tiles_y;
|
FBU.total_tiles = FBU.tiles_x * FBU.tiles_y;
|
||||||
FBU.tiles = FBU.total_tiles;
|
FBU.tiles = FBU.total_tiles;
|
||||||
|
//msg += "(HEXTILE " + FBU.tiles + " tiles)"
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
console.log("Unsupported encoding " + FBU.encoding);
|
console.log("Unsupported encoding " + FBU.encoding);
|
||||||
RFB.state = "failed";
|
RFB.state = "failed";
|
||||||
break;
|
return;
|
||||||
}
|
}
|
||||||
|
//msg += ", RFB.d.length: " + RFB.d.length + ", FBU.bytes: " + FBU.bytes
|
||||||
|
//console.log(msg);
|
||||||
}
|
}
|
||||||
//console.log("RFB.d.length: " + RFB.d.length + ", FBU.bytes: " + FBU.bytes);
|
|
||||||
|
|
||||||
if (RFB.d.length >= FBU.bytes) {
|
if (RFB.d.length >= FBU.bytes) {
|
||||||
//console.log('Done rect:');
|
|
||||||
FBU.bytes = 0;
|
FBU.bytes = 0;
|
||||||
|
|
||||||
switch (FBU.encoding) {
|
switch (FBU.encoding) {
|
||||||
|
@ -542,7 +551,7 @@ encodings: function () {
|
||||||
},
|
},
|
||||||
|
|
||||||
fbUpdateRequest: function (incremental, x, y, xw, yw) {
|
fbUpdateRequest: function (incremental, x, y, xw, yw) {
|
||||||
console.log(">> fbUpdateRequest");
|
//console.log(">> fbUpdateRequest");
|
||||||
if (!x) x = 0;
|
if (!x) x = 0;
|
||||||
if (!y) y = 0;
|
if (!y) y = 0;
|
||||||
if (!xw) xw = RFB.fb_width;
|
if (!xw) xw = RFB.fb_width;
|
||||||
|
@ -559,7 +568,7 @@ fbUpdateRequest: function (incremental, x, y, xw, yw) {
|
||||||
},
|
},
|
||||||
|
|
||||||
keyEvent: function (keysym, down) {
|
keyEvent: function (keysym, down) {
|
||||||
console.log(">> keyEvent, keysym: " + keysym + ", down: " + down);
|
//console.log(">> keyEvent, keysym: " + keysym + ", down: " + down);
|
||||||
var arr;
|
var arr;
|
||||||
arr = [4]; // msg-type
|
arr = [4]; // msg-type
|
||||||
arr.push8(down);
|
arr.push8(down);
|
||||||
|
@ -571,13 +580,13 @@ keyEvent: function (keysym, down) {
|
||||||
},
|
},
|
||||||
|
|
||||||
pointerEvent: function (x, y) {
|
pointerEvent: function (x, y) {
|
||||||
console.log(">> pointerEvent, x,y: " + x + "," + y + " , mask: " + Mouse.buttonMask);
|
//console.log(">> pointerEvent, x,y: " + x + "," + y + " , mask: " + Mouse.buttonMask);
|
||||||
var arr;
|
var arr;
|
||||||
arr = [5]; // msg-type
|
arr = [5]; // msg-type
|
||||||
arr.push8(Mouse.buttonMask);
|
arr.push8(Mouse.buttonMask);
|
||||||
arr.push16(x);
|
arr.push16(x);
|
||||||
arr.push16(y);
|
arr.push16(y);
|
||||||
console.log("<< pointerEvent");
|
//console.log("<< pointerEvent");
|
||||||
return arr;
|
return arr;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -596,7 +605,7 @@ send_string: function (str) {
|
||||||
},
|
},
|
||||||
|
|
||||||
send_array: function (arr) {
|
send_array: function (arr) {
|
||||||
console.log(">> send_array: " + arr);
|
//console.log(">> send_array: " + arr);
|
||||||
//console.log(">> send_array: " + Base64.encode_array(arr));
|
//console.log(">> send_array: " + Base64.encode_array(arr));
|
||||||
RFB.ws.send(Base64.encode_array(arr));
|
RFB.ws.send(Base64.encode_array(arr));
|
||||||
},
|
},
|
||||||
|
@ -637,7 +646,7 @@ pusher: function () {
|
||||||
},
|
},
|
||||||
|
|
||||||
keyDown: function (e) {
|
keyDown: function (e) {
|
||||||
//console.log(">> keyDown: " + e.key + "(" + e.code + ")");
|
console.log(">> keyDown: " + Canvas.getKeysym(e));
|
||||||
e.stop();
|
e.stop();
|
||||||
var arr = RFB.keyEvent(Canvas.getKeysym(e), 1);
|
var arr = RFB.keyEvent(Canvas.getKeysym(e), 1);
|
||||||
arr = arr.concat(RFB.fbUpdateRequest(1));
|
arr = arr.concat(RFB.fbUpdateRequest(1));
|
||||||
|
@ -645,7 +654,7 @@ keyDown: function (e) {
|
||||||
},
|
},
|
||||||
|
|
||||||
keyUp: function (e) {
|
keyUp: function (e) {
|
||||||
//console.log(">> keyUp: " + e.key + "(" + e.code + ")");
|
console.log(">> keyUp: " + Canvas.getKeysym(e));
|
||||||
e.stop();
|
e.stop();
|
||||||
var arr = RFB.keyEvent(Canvas.getKeysym(e), 0);
|
var arr = RFB.keyEvent(Canvas.getKeysym(e), 0);
|
||||||
arr = arr.concat(RFB.fbUpdateRequest(1));
|
arr = arr.concat(RFB.fbUpdateRequest(1));
|
||||||
|
|
Loading…
Reference in New Issue