display: add update_compression() method

Acked-by: Pavel Grunt <pgrunt@redhat.com>
This commit is contained in:
Marc-André Lureau 2013-10-03 21:31:20 +02:00 committed by Frediano Ziglio
parent 47b023866f
commit 4980850dd2
3 changed files with 23 additions and 17 deletions

View File

@ -1875,3 +1875,20 @@ exit:
red_put_surface_cmd(surface);
free(surface);
}
void display_channel_update_compression(DisplayChannel *display, DisplayChannelClient *dcc)
{
if (dcc->jpeg_state == SPICE_WAN_COMPRESSION_AUTO) {
display->enable_jpeg = dcc->common.is_low_bandwidth;
} else {
display->enable_jpeg = (dcc->jpeg_state == SPICE_WAN_COMPRESSION_ALWAYS);
}
if (dcc->zlib_glz_state == SPICE_WAN_COMPRESSION_AUTO) {
display->enable_zlib_glz_wrap = dcc->common.is_low_bandwidth;
} else {
display->enable_zlib_glz_wrap = (dcc->zlib_glz_state == SPICE_WAN_COMPRESSION_ALWAYS);
}
spice_info("jpeg %s", display->enable_jpeg ? "enabled" : "disabled");
spice_info("zlib-over-glz %s", display->enable_zlib_glz_wrap ? "enabled" : "disabled");
}

View File

@ -304,6 +304,8 @@ void display_channel_process_surface_cmd (DisplayCha
RedSurfaceCmd *surface,
uint32_t group_id,
int loadvm);
void display_channel_update_compression (DisplayChannel *display,
DisplayChannelClient *dcc);
static inline int validate_surface(DisplayChannel *display, uint32_t surface_id)
{

View File

@ -954,34 +954,21 @@ static void handle_new_display_channel(RedWorker *worker, RedClient *client, Red
uint32_t *common_caps, int num_common_caps,
uint32_t *caps, int num_caps)
{
DisplayChannel *display_channel;
DisplayChannel *display;
DisplayChannelClient *dcc;
spice_return_if_fail(worker->display_channel);
display_channel = worker->display_channel;
display = worker->display_channel;
spice_info("add display channel client");
dcc = dcc_new(display_channel, client, stream, migrate,
dcc = dcc_new(display, client, stream, migrate,
common_caps, num_common_caps, caps, num_caps,
worker->image_compression, worker->jpeg_state, worker->zlib_glz_state);
if (!dcc) {
return;
}
if (dcc->jpeg_state == SPICE_WAN_COMPRESSION_AUTO) {
display_channel->enable_jpeg = dcc->common.is_low_bandwidth;
} else {
display_channel->enable_jpeg = (dcc->jpeg_state == SPICE_WAN_COMPRESSION_ALWAYS);
}
if (dcc->zlib_glz_state == SPICE_WAN_COMPRESSION_AUTO) {
display_channel->enable_zlib_glz_wrap = dcc->common.is_low_bandwidth;
} else {
display_channel->enable_zlib_glz_wrap = (dcc->zlib_glz_state ==
SPICE_WAN_COMPRESSION_ALWAYS);
}
spice_info("jpeg %s", display_channel->enable_jpeg ? "enabled" : "disabled");
spice_info("zlib-over-glz %s", display_channel->enable_zlib_glz_wrap ? "enabled" : "disabled");
display_channel_update_compression(display, dcc);
guest_set_client_capabilities(worker);
dcc_start(dcc);