mirror of
https://github.com/gyurix1968/guacamole-client.git
synced 2025-09-06 13:17:41 +00:00
GUACAMOLE-250: Merge asynchronous client state export.
This commit is contained in:
@@ -133,16 +133,18 @@ Guacamole.Client = function(tunnel) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an opaque representation of Guacamole.Client state which can be
|
||||
* Produces an opaque representation of Guacamole.Client state which can be
|
||||
* later imported through a call to importState(). This object is
|
||||
* effectively an independent, compressed snapshot of protocol and display
|
||||
* state.
|
||||
* state. Invoking this function implicitly flushes the display.
|
||||
*
|
||||
* @returns {Object}
|
||||
* An opaque representation of Guacamole.Client state which can be
|
||||
* imported through a call to importState().
|
||||
* @param {function} callback
|
||||
* Callback which should be invoked once the state object is ready. The
|
||||
* state object will be passed to the callback as the sole parameter.
|
||||
* This callback may be invoked immediately, or later as the display
|
||||
* finishes rendering and becomes ready.
|
||||
*/
|
||||
this.exportState = function exportState() {
|
||||
this.exportState = function exportState(callback) {
|
||||
|
||||
// Start with empty state
|
||||
var state = {
|
||||
@@ -151,11 +153,21 @@ Guacamole.Client = function(tunnel) {
|
||||
'layers' : {}
|
||||
};
|
||||
|
||||
// Export each defined layer/buffer
|
||||
var layersSnapshot = {};
|
||||
|
||||
// Make a copy of all current layers (protocol state)
|
||||
for (var key in layers) {
|
||||
layersSnapshot[key] = layers[key];
|
||||
}
|
||||
|
||||
// Populate layers once data is available (display state, requires flush)
|
||||
display.flush(function populateLayers() {
|
||||
|
||||
// Export each defined layer/buffer
|
||||
for (var key in layersSnapshot) {
|
||||
|
||||
var index = parseInt(key);
|
||||
var layer = layers[key];
|
||||
var layer = layersSnapshot[key];
|
||||
var canvas = layer.toCanvas();
|
||||
|
||||
// Store layer/buffer dimensions
|
||||
@@ -183,7 +195,10 @@ Guacamole.Client = function(tunnel) {
|
||||
|
||||
}
|
||||
|
||||
return state;
|
||||
// Invoke callback now that the state is ready
|
||||
callback(state);
|
||||
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user