mirror of
https://github.com/gyurix1968/guacamole-client.git
synced 2025-09-06 05:07:41 +00:00
Added busy handlers for layer, implemented ready instruction handling in client
This commit is contained in:
@@ -143,6 +143,42 @@ function GuacamoleClient(display, tunnel) {
|
|||||||
clipboardHandler = handler;
|
clipboardHandler = handler;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
var readyCallback = null;
|
||||||
|
var busyLayers = 0;
|
||||||
|
|
||||||
|
function layerBusy() { busyLayers++; }
|
||||||
|
function layerReady() {
|
||||||
|
busyLayers--;
|
||||||
|
if (readyCallback != null)
|
||||||
|
readyCallback();
|
||||||
|
}
|
||||||
|
|
||||||
|
function sendReady() {
|
||||||
|
|
||||||
|
// If ready, send ready message
|
||||||
|
if (busyLayers == 0) {
|
||||||
|
tunnel.sendMessage("ready;");
|
||||||
|
}
|
||||||
|
|
||||||
|
// If not ready, queue message for when ready
|
||||||
|
else if (readyCallback == null) {
|
||||||
|
readyCallback = function() {
|
||||||
|
tunnel.sendMessage("ready;");
|
||||||
|
readyCallback = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function getTrackedLayer(w, h) {
|
||||||
|
var layer = new Layer(w, h);
|
||||||
|
|
||||||
|
layer.setBusyHandler(layerBusy);
|
||||||
|
layer.setReadyHandler(layerReady);
|
||||||
|
|
||||||
|
return layer;
|
||||||
|
}
|
||||||
|
|
||||||
// Layers
|
// Layers
|
||||||
var displayWidth = 0;
|
var displayWidth = 0;
|
||||||
var displayHeight = 0;
|
var displayHeight = 0;
|
||||||
@@ -165,7 +201,7 @@ function GuacamoleClient(display, tunnel) {
|
|||||||
|
|
||||||
// Create buffer if necessary
|
// Create buffer if necessary
|
||||||
if (buffer == null) {
|
if (buffer == null) {
|
||||||
buffer = new Layer(0, 0);
|
buffer = new Layer(0, 0); // Untracked
|
||||||
buffer.setAutosize(1);
|
buffer.setAutosize(1);
|
||||||
buffers[index] = buffer;
|
buffers[index] = buffer;
|
||||||
}
|
}
|
||||||
@@ -180,7 +216,7 @@ function GuacamoleClient(display, tunnel) {
|
|||||||
if (layer == null) {
|
if (layer == null) {
|
||||||
|
|
||||||
// Add new layer
|
// Add new layer
|
||||||
layer = new Layer(displayWidth, displayHeight);
|
layer = getTrackedLayer(displayWidth, displayHeight);
|
||||||
layers[index] = layer;
|
layers[index] = layer;
|
||||||
|
|
||||||
// (Re)-add existing layers in order
|
// (Re)-add existing layers in order
|
||||||
@@ -220,6 +256,10 @@ function GuacamoleClient(display, tunnel) {
|
|||||||
if (errorHandler) errorHandler(tunnel.unescapeGuacamoleString(parameters[0]));
|
if (errorHandler) errorHandler(tunnel.unescapeGuacamoleString(parameters[0]));
|
||||||
},
|
},
|
||||||
|
|
||||||
|
"ready": function(parameters) {
|
||||||
|
sendReady();
|
||||||
|
},
|
||||||
|
|
||||||
"name": function(parameters) {
|
"name": function(parameters) {
|
||||||
if (nameHandler) nameHandler(tunnel.unescapeGuacamoleString(parameters[0]));
|
if (nameHandler) nameHandler(tunnel.unescapeGuacamoleString(parameters[0]));
|
||||||
},
|
},
|
||||||
@@ -292,7 +332,7 @@ function GuacamoleClient(display, tunnel) {
|
|||||||
var data = parameters[2];
|
var data = parameters[2];
|
||||||
|
|
||||||
if (cursor == null) {
|
if (cursor == null) {
|
||||||
cursor = new Layer(displayWidth, displayHeight);
|
cursor = getTrackedLayer(displayWidth, displayHeight);
|
||||||
display.appendChild(cursor);
|
display.appendChild(cursor);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -68,7 +68,9 @@ function Layer(width, height) {
|
|||||||
|
|
||||||
resize(width, height);
|
resize(width, height);
|
||||||
|
|
||||||
|
var busyHandler = null;
|
||||||
var readyHandler = null;
|
var readyHandler = null;
|
||||||
|
|
||||||
var updates = new Array();
|
var updates = new Array();
|
||||||
var autosize = 0;
|
var autosize = 0;
|
||||||
|
|
||||||
@@ -131,6 +133,10 @@ function Layer(width, height) {
|
|||||||
readyHandler = handler;
|
readyHandler = handler;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
display.setBusyHandler = function(handler) {
|
||||||
|
busyHandler = handler;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
display.drawImage = function(x, y, image) {
|
display.drawImage = function(x, y, image) {
|
||||||
reserveJob(function() {
|
reserveJob(function() {
|
||||||
@@ -141,6 +147,11 @@ function Layer(width, height) {
|
|||||||
|
|
||||||
|
|
||||||
display.draw = function(x, y, url) {
|
display.draw = function(x, y, url) {
|
||||||
|
|
||||||
|
// If about to become busy, call busy handler
|
||||||
|
if (display.isReady() && busyHandler != null)
|
||||||
|
busyHandler();
|
||||||
|
|
||||||
var update = reserveJob(null);
|
var update = reserveJob(null);
|
||||||
|
|
||||||
var image = new Image();
|
var image = new Image();
|
||||||
|
Reference in New Issue
Block a user