summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJavier Celaya <javier.celaya@flexvm.es>2015-04-17 12:40:48 +0200
committerChristophe Fergeau <cfergeau@redhat.com>2015-06-30 16:49:29 +0200
commitc914e96fb4de3ba8b2df174d7c7af8ff76af1081 (patch)
tree2ba0e856ccd334978f4da011d1cf2f6f6a6a8db8
parent22c40b9d1fadc7892580aeb831514a81320e7b76 (diff)
Handle preferred image compression messages
-rw-r--r--server/red_worker.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/server/red_worker.c b/server/red_worker.c
index 92377863..10717167 100644
--- a/server/red_worker.c
+++ b/server/red_worker.c
@@ -10266,6 +10266,27 @@ static int display_channel_handle_stream_report(DisplayChannelClient *dcc,
return TRUE;
}
+static int display_channel_handle_preferred_compression(DisplayChannelClient *dcc,
+ SpiceMsgcDisplayPreferredCompression *pc) {
+ DisplayChannel *display_channel = DCC_TO_DC(dcc);
+ switch (pc->image_compression) {
+ case SPICE_IMAGE_COMPRESS_AUTO_LZ:
+ case SPICE_IMAGE_COMPRESS_AUTO_GLZ:
+ case SPICE_IMAGE_COMPRESS_QUIC:
+#ifdef USE_LZ4
+ case SPICE_IMAGE_COMPRESS_LZ4:
+#endif
+ case SPICE_IMAGE_COMPRESS_LZ:
+ case SPICE_IMAGE_COMPRESS_GLZ:
+ case SPICE_IMAGE_COMPRESS_OFF:
+ display_channel->common.worker->image_compression = pc->image_compression;
+ return TRUE;
+ default:
+ spice_warning("preferred-compression: unsupported image compression setting");
+ return FALSE;
+ }
+}
+
static int display_channel_handle_message(RedChannelClient *rcc, uint32_t size, uint16_t type,
void *message)
{
@@ -10282,6 +10303,10 @@ static int display_channel_handle_message(RedChannelClient *rcc, uint32_t size,
case SPICE_MSGC_DISPLAY_STREAM_REPORT:
return display_channel_handle_stream_report(dcc,
(SpiceMsgcDisplayStreamReport *)message);
+ case SPICE_MSGC_DISPLAY_PREFERRED_COMPRESSION:
+ return display_channel_handle_preferred_compression(dcc,
+ (SpiceMsgcDisplayPreferredCompression *)message);
+
default:
return red_channel_client_handle_message(rcc, size, type, message);
}