--- display.js | 15 +++++++++++++++ enums.js | 10 ++++++++++ spicemsg.js | 20 ++++++++++++++++++++ 3 files changed, 45 insertions(+) diff --git a/display.js b/display.js index 7719b23..4649ef2 100644 --- a/display.js +++ b/display.js @@ -865,6 +865,21 @@ SpiceDisplayConn.prototype.destroy_surfaces = function() this.surfaces = undefined; } +SpiceDisplayConn.prototype.change_preferred_compression = function(compression_id) +{ + var ch = this.channel_type(); + if (!this.channel_test_capability(SPICE_DISPLAY_CAP_PREF_COMPRESSION)) + { + this.log_warn(ch + " does not have capability to change the preferred compression"); + return; + } + + var msg = new SpiceMiniData(); + var compression = new SpiceMsgcDisplayPreferredCompression(compression_id); + + msg.build_msg(SPICE_MSGC_DISPLAY_PREFERRED_COMPRESSION, compression); + this.send_msg(msg); +} function handle_mouseover(e) { diff --git a/enums.js b/enums.js index b6e013c..b37cb20 100644 --- a/enums.js +++ b/enums.js @@ -134,6 +134,7 @@ var SPICE_MSG_DISPLAY_STREAM_ACTIVATE_REPORT = 319; var SPICE_MSGC_DISPLAY_INIT = 101; var SPICE_MSGC_DISPLAY_STREAM_REPORT = 102; +var SPICE_MSGC_DISPLAY_PREFERRED_COMPRESSION = 103; var SPICE_MSG_INPUTS_INIT = 101; var SPICE_MSG_INPUTS_KEY_MODIFIERS = 102; @@ -243,6 +244,15 @@ var SPICE_IMAGE_TYPE_FROM_CACHE_LOSSLESS = 106; var SPICE_IMAGE_TYPE_ZLIB_GLZ_RGB = 107; var SPICE_IMAGE_TYPE_JPEG_ALPHA = 108; +var SPICE_IMAGE_COMPRESSION_INVALID = 0, + SPICE_IMAGE_COMPRESSION_OFF = 1, + SPICE_IMAGE_COMPRESSION_AUTO_GLZ = 2, + SPICE_IMAGE_COMPRESSION_AUTO_LZ = 3, + SPICE_IMAGE_COMPRESSION_QUIC = 4, + SPICE_IMAGE_COMPRESSION_GLZ = 5, + SPICE_IMAGE_COMPRESSION_LZ = 6, + SPICE_IMAGE_COMPRESSION_LZ4 = 7; + var SPICE_IMAGE_FLAGS_CACHE_ME = (1 << 0), SPICE_IMAGE_FLAGS_HIGH_BITS_SET = (1 << 1), SPICE_IMAGE_FLAGS_CACHE_REPLACE_ME = (1 << 2); diff --git a/spicemsg.js b/spicemsg.js index 3619996..8a9eeed 100644 --- a/spicemsg.js +++ b/spicemsg.js @@ -1296,3 +1296,23 @@ SpiceMsgPortInit.prototype = this.name = a.slice(offset, offset + namesize - 1); } } + +function SpiceMsgcDisplayPreferredCompression(compression) +{ + this.image_compression = compression; +} + +SpiceMsgcDisplayPreferredCompression.prototype = +{ + to_buffer: function(a, at) + { + at = at || 0; + var dv = new SpiceDataView(a); + dv.setUint8(at, this.image_compression, true); at += 1; + return at; + }, + buffer_size: function() + { + return 1; + } +} -- 2.9.5 _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel