[Spice-devel] [PATCH spice-server] worker: remove compression parameters

Frediano Ziglio fziglio at redhat.com
Tue Nov 10 06:28:37 PST 2015


> 
> ---
>  server/red_worker.c | 20 ++++++++------------
>  1 file changed, 8 insertions(+), 12 deletions(-)
> 
> diff --git a/server/red_worker.c b/server/red_worker.c
> index 111f8ba..85e0ebd 100644
> --- a/server/red_worker.c
> +++ b/server/red_worker.c
> @@ -323,10 +323,6 @@ typedef struct RedWorker {
>  
>      RedMemSlotInfo mem_slots;
>  
> -    SpiceImageCompression image_compression;
> -    spice_wan_compression_t jpeg_state;
> -    spice_wan_compression_t zlib_glz_state;
> -
>      QuicData quic_data;
>      QuicContext *quic;
>  
> @@ -8074,7 +8070,6 @@ static int
> display_channel_handle_stream_report(DisplayChannelClient *dcc,
>  
>  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_COMPRESSION_AUTO_LZ:
>      case SPICE_IMAGE_COMPRESSION_AUTO_GLZ:
> @@ -8085,7 +8080,7 @@ static int
> display_channel_handle_preferred_compression(DisplayChannelClient *dc
>      case SPICE_IMAGE_COMPRESSION_LZ:
>      case SPICE_IMAGE_COMPRESSION_GLZ:
>      case SPICE_IMAGE_COMPRESSION_OFF:
> -        display_channel->common.worker->image_compression =
> pc->image_compression;
> +        dcc->image_compression = pc->image_compression;
>          return TRUE;
>      default:
>          spice_warning("preferred-compression: unsupported image compression
>          setting");
> @@ -8552,7 +8547,7 @@ static void handle_new_display_channel(RedWorker
> *worker, RedClient *client, Red
>      spice_info("add display channel client");
>      dcc = dcc_new(display_channel, client, stream, migrate,
>                    common_caps, num_common_caps, caps, num_caps,
> -                  worker->image_compression, worker->jpeg_state,
> worker->zlib_glz_state);
> +                  image_compression, jpeg_state, zlib_glz_state);
>      if (!dcc) {
>          return;
>      }

I think this uses just globals. Could be a problem if the different cards
(like in Windows for multi monitor) wants to use different settings

> @@ -9220,9 +9215,13 @@ static void handle_dev_set_compression(void *opaque,
> void *payload)
>  {
>      RedWorkerMessageSetCompression *msg = payload;
>      RedWorker *worker = opaque;
> +    DisplayChannelClient *dcc;
> +    RingItem *item, *next;
>  
> -    worker->image_compression = msg->image_compression;
> -    switch (worker->image_compression) {
> +    FOREACH_DCC(worker->display_channel, item, next, dcc) {
> +        dcc->image_compression = msg->image_compression;
> +    }

I think this change the behavior a bit.
Previously the setting was used for newer created DCCs while
now affects all present DCCs.

> +    switch (msg->image_compression) {
>      case SPICE_IMAGE_COMPRESSION_AUTO_LZ:
>          spice_info("ic auto_lz");
>          break;
> @@ -9589,9 +9588,6 @@ RedWorker* red_worker_new(QXLInstance *qxl,
> RedDispatcher *red_dispatcher)
>      if (worker->record_fd) {
>          dispatcher_register_universal_handler(dispatcher,
>          worker_dispatcher_record);
>      }
> -    worker->image_compression = image_compression;
> -    worker->jpeg_state = jpeg_state;
> -    worker->zlib_glz_state = zlib_glz_state;
>      worker->driver_cap_monitors_config = 0;
>      stat_init(&worker->add_stat, add_stat_name);
>      stat_init(&worker->exclude_stat, exclude_stat_name);
> --
> 2.5.0
> 

Frediano


More information about the Spice-devel mailing list