Support for newly added ready message

This commit is contained in:
Michael Jumper
2011-01-21 03:12:00 -08:00
parent d9ffdf8184
commit 7cfc86ce74
2 changed files with 33 additions and 1 deletions

View File

@@ -440,6 +440,21 @@ function GuacamoleClient(display) {
var instructionHandlers = {
"ready": function(parameters) {
// If done drawing, send ready response
if (background.isReady())
sendMessage("ready;");
// If not done drawing, set callback which will send response
else
background.setReadyHandler(function() {
sendMessage("ready;");
background.setReadyHandler(null);
});
},
"error": function(parameters) {
showError(unescapeGuacamoleString(parameters[0]));
},
@@ -572,6 +587,9 @@ function GuacamoleClient(display) {
setState(STATE_WAITING);
handleResponse(makeRequest());
// Send "ready" message to server
sendMessage("ready;");
};

View File

@@ -31,6 +31,7 @@ function Layer(width, height) {
var displayContext = display.getContext("2d");
var readyHandler = null;
var nextUpdateToDraw = 0;
var currentUpdate = 0;
var updates = new Array();
@@ -47,11 +48,15 @@ function Layer(width, height) {
// Draw all pending updates.
var updateCallback;
while (updateCallback = updates[++nextUpdateToDraw]) {
while ((updateCallback = updates[++nextUpdateToDraw])) {
updateCallback();
delete updates[nextUpdateToDraw];
}
// If done with updates, call ready handler
if (display.isReady() && readyHandler != null)
readyHandler();
}
// If not next to draw, set callback and wait.
@@ -60,6 +65,15 @@ function Layer(width, height) {
}
display.isReady = function() {
return currentUpdate == nextUpdateToDraw;
}
display.setReadyHandler = function(handler) {
readyHandler = handler;
}
display.drawImage = function(x, y, image) {
var updateId = currentUpdate++;