Re-order routines, no functional changes.
This commit is contained in:
parent
fb99d81ccc
commit
28a5f29357
220
vnc.js
220
vnc.js
|
@ -223,7 +223,119 @@ init_msg: function () {
|
||||||
console.log("<< init_msg (" + RFB.state + ")");
|
console.log("<< init_msg (" + RFB.state + ")");
|
||||||
},
|
},
|
||||||
|
|
||||||
/* Framebuffer update display functions */
|
|
||||||
|
/* Normal RFB/VNC server messages */
|
||||||
|
normal_msg: function () {
|
||||||
|
//console.log(">> normal_msg");
|
||||||
|
if ((FBU.rects > 0) || (FBU.bytes > 0)) {
|
||||||
|
var msg_type = 0;
|
||||||
|
} else {
|
||||||
|
var msg_type = RFB.d.shift8();
|
||||||
|
}
|
||||||
|
switch (msg_type) {
|
||||||
|
case 0: // FramebufferUpdate
|
||||||
|
if (FBU.rects == 0) {
|
||||||
|
if (RFB.d.length < 3) {
|
||||||
|
console.log(" waiting for FBU header bytes");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
RFB.d.shift8();
|
||||||
|
FBU.rects = RFB.d.shift16();
|
||||||
|
//console.log("FramebufferUpdate, rects:" + FBU.rects);
|
||||||
|
FBU.bytes = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
while ((FBU.rects > 0) && (RFB.d.length > 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.y = RFB.d.shift16();
|
||||||
|
FBU.width = RFB.d.shift16();
|
||||||
|
FBU.height = RFB.d.shift16();
|
||||||
|
FBU.encoding = parseInt(RFB.d.shift32(), 10);
|
||||||
|
//var msg = "FramebufferUpdate rects:" + FBU.rects + " encoding:" + FBU.encoding
|
||||||
|
switch (FBU.encoding) {
|
||||||
|
case 0: // Raw
|
||||||
|
FBU.bytes = FBU.width * FBU.height * RFB.fb_Bpp;
|
||||||
|
//msg += "(RAW)"
|
||||||
|
break;
|
||||||
|
case 1: // Copy-Rect
|
||||||
|
FBU.bytes = 4;
|
||||||
|
//msg += "(COPY-RECT)"
|
||||||
|
break;
|
||||||
|
case 2: // RRE
|
||||||
|
FBU.bytes = 4 + RFB.fb_Bpp;
|
||||||
|
//msg += "(RRE)"
|
||||||
|
break;
|
||||||
|
case 5: // hextile
|
||||||
|
FBU.bytes = 2; // No header; get it started
|
||||||
|
FBU.tiles_x = Math.ceil(FBU.width/16);
|
||||||
|
FBU.tiles_y = Math.ceil(FBU.height/16);
|
||||||
|
FBU.total_tiles = FBU.tiles_x * FBU.tiles_y;
|
||||||
|
FBU.tiles = FBU.total_tiles;
|
||||||
|
//msg += "(HEXTILE " + FBU.tiles + " tiles)"
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
console.log("Unsupported encoding " + FBU.encoding);
|
||||||
|
RFB.state = "failed";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
//msg += ", RFB.d.length: " + RFB.d.length + ", FBU.bytes: " + FBU.bytes
|
||||||
|
//console.log(msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (RFB.d.length >= FBU.bytes) {
|
||||||
|
FBU.bytes = 0;
|
||||||
|
|
||||||
|
switch (FBU.encoding) {
|
||||||
|
case 0: RFB.display_raw(); break; // Raw
|
||||||
|
case 1: RFB.display_copy_rect(); break; // Copy-Rect
|
||||||
|
case 2: RFB.display_rre(); break; // RRE
|
||||||
|
case 5: RFB.display_hextile(); break; // hextile
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
/* We don't have enough yet */
|
||||||
|
FBU.bytes = FBU.bytes - RFB.d.length;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (RFB.state != "normal") return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//console.log("Finished frame buffer update");
|
||||||
|
break;
|
||||||
|
case 1: // SetColourMapEntries
|
||||||
|
console.log("SetColourMapEntries (unsupported)");
|
||||||
|
RFB.d.shift8(); // Padding
|
||||||
|
RFB.d.shift16(); // First colour
|
||||||
|
var num_colours = RFB.d.shift16();
|
||||||
|
RFB.d.shiftBytes(num_colours * 6);
|
||||||
|
break;
|
||||||
|
case 2: // Bell
|
||||||
|
console.log("Bell (unsupported)");
|
||||||
|
break;
|
||||||
|
case 3: // ServerCutText
|
||||||
|
console.log("ServerCutText");
|
||||||
|
RFB.d.shiftBytes(3); // Padding
|
||||||
|
var length = RFB.d.shift32();
|
||||||
|
RFB.d.shiftBytes(length);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
console.log("Unknown server message type: " + msg_type);
|
||||||
|
RFB.state = "failed";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
//console.log("<< normal_msg");
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* FramebufferUpdate encodings
|
||||||
|
*/
|
||||||
|
|
||||||
display_raw: function () {
|
display_raw: function () {
|
||||||
console.log(">> display_raw");
|
console.log(">> display_raw");
|
||||||
Canvas.rfbImage(FBU.x, FBU.y, FBU.width, FBU.height, RFB.d);
|
Canvas.rfbImage(FBU.x, FBU.y, FBU.width, FBU.height, RFB.d);
|
||||||
|
@ -401,112 +513,6 @@ display_hextile: function() {
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
/* Normal RFB/VNC messages */
|
|
||||||
normal_msg: function () {
|
|
||||||
//console.log(">> normal_msg");
|
|
||||||
if ((FBU.rects > 0) || (FBU.bytes > 0)) {
|
|
||||||
var msg_type = 0;
|
|
||||||
} else {
|
|
||||||
var msg_type = RFB.d.shift8();
|
|
||||||
}
|
|
||||||
switch (msg_type) {
|
|
||||||
case 0: // FramebufferUpdate
|
|
||||||
if (FBU.rects == 0) {
|
|
||||||
if (RFB.d.length < 3) {
|
|
||||||
console.log(" waiting for FBU header bytes");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
RFB.d.shift8();
|
|
||||||
FBU.rects = RFB.d.shift16();
|
|
||||||
//console.log("FramebufferUpdate, rects:" + FBU.rects);
|
|
||||||
FBU.bytes = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
while ((FBU.rects > 0) && (RFB.d.length > 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.y = RFB.d.shift16();
|
|
||||||
FBU.width = RFB.d.shift16();
|
|
||||||
FBU.height = RFB.d.shift16();
|
|
||||||
FBU.encoding = parseInt(RFB.d.shift32(), 10);
|
|
||||||
//var msg = "FramebufferUpdate rects:" + FBU.rects + " encoding:" + FBU.encoding
|
|
||||||
switch (FBU.encoding) {
|
|
||||||
case 0: // Raw
|
|
||||||
FBU.bytes = FBU.width * FBU.height * RFB.fb_Bpp;
|
|
||||||
//msg += "(RAW)"
|
|
||||||
break;
|
|
||||||
case 1: // Copy-Rect
|
|
||||||
FBU.bytes = 4;
|
|
||||||
//msg += "(COPY-RECT)"
|
|
||||||
break;
|
|
||||||
case 2: // RRE
|
|
||||||
FBU.bytes = 4 + RFB.fb_Bpp;
|
|
||||||
//msg += "(RRE)"
|
|
||||||
break;
|
|
||||||
case 5: // hextile
|
|
||||||
FBU.bytes = 2; // No header; get it started
|
|
||||||
FBU.tiles_x = Math.ceil(FBU.width/16);
|
|
||||||
FBU.tiles_y = Math.ceil(FBU.height/16);
|
|
||||||
FBU.total_tiles = FBU.tiles_x * FBU.tiles_y;
|
|
||||||
FBU.tiles = FBU.total_tiles;
|
|
||||||
//msg += "(HEXTILE " + FBU.tiles + " tiles)"
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
console.log("Unsupported encoding " + FBU.encoding);
|
|
||||||
RFB.state = "failed";
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
//msg += ", RFB.d.length: " + RFB.d.length + ", FBU.bytes: " + FBU.bytes
|
|
||||||
//console.log(msg);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (RFB.d.length >= FBU.bytes) {
|
|
||||||
FBU.bytes = 0;
|
|
||||||
|
|
||||||
switch (FBU.encoding) {
|
|
||||||
case 0: RFB.display_raw(); break; // Raw
|
|
||||||
case 1: RFB.display_copy_rect(); break; // Copy-Rect
|
|
||||||
case 2: RFB.display_rre(); break; // RRE
|
|
||||||
case 5: RFB.display_hextile(); break; // hextile
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
/* We don't have enough yet */
|
|
||||||
FBU.bytes = FBU.bytes - RFB.d.length;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (RFB.state != "normal") return;
|
|
||||||
}
|
|
||||||
|
|
||||||
//console.log("Finished frame buffer update");
|
|
||||||
break;
|
|
||||||
case 1: // SetColourMapEntries
|
|
||||||
console.log("SetColourMapEntries (unsupported)");
|
|
||||||
RFB.d.shift8(); // Padding
|
|
||||||
RFB.d.shift16(); // First colour
|
|
||||||
var num_colours = RFB.d.shift16();
|
|
||||||
RFB.d.shiftBytes(num_colours * 6);
|
|
||||||
break;
|
|
||||||
case 2: // Bell
|
|
||||||
console.log("Bell (unsupported)");
|
|
||||||
break;
|
|
||||||
case 3: // ServerCutText
|
|
||||||
console.log("ServerCutText");
|
|
||||||
RFB.d.shiftBytes(3); // Padding
|
|
||||||
var length = RFB.d.shift32();
|
|
||||||
RFB.d.shiftBytes(length);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
console.log("Unknown server message type: " + msg_type);
|
|
||||||
RFB.state = "failed";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
//console.log("<< normal_msg");
|
|
||||||
},
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Client message routines
|
* Client message routines
|
||||||
|
|
Loading…
Reference in New Issue