Acked-by: Jonathon Jongsma <jjongsma@xxxxxxxxxx> On Tue, 2019-03-26 at 19:10 +0000, Frediano Ziglio wrote: > Signed-off-by: Frediano Ziglio <fziglio@xxxxxxxxxx> > --- > server/display-channel-private.h | 1 + > server/display-channel.c | 10 ++++++++-- > server/display-channel.h | 2 ++ > server/red-worker.c | 7 +++---- > 4 files changed, 14 insertions(+), 6 deletions(-) > > diff --git a/server/display-channel-private.h b/server/display- > channel-private.h > index 58179531..4cdae8dc 100644 > --- a/server/display-channel-private.h > +++ b/server/display-channel-private.h > @@ -87,6 +87,7 @@ struct DisplayChannelPrivate > MonitorsConfig *monitors_config; > > uint32_t renderer; > + SpiceImageCompression image_compression; > int enable_jpeg; > int enable_zlib_glz_wrap; > > diff --git a/server/display-channel.c b/server/display-channel.c > index c2129c71..7b833e4c 100644 > --- a/server/display-channel.c > +++ b/server/display-channel.c > @@ -2273,6 +2273,7 @@ display_channel_init(DisplayChannel *self) > /* must be manually allocated here since > g_type_class_add_private() only > * supports structs smaller than 64k */ > self->priv = g_new0(DisplayChannelPrivate, 1); > + self->priv->image_compression = > SPICE_IMAGE_COMPRESSION_AUTO_GLZ; > self->priv->pub = self; > > image_encoder_shared_init(&self->priv->encoder_shared_data); > @@ -2611,10 +2612,9 @@ display_channel_connect(RedChannel *channel, > RedClient *client, > > spice_debug("connect new client"); > > - // FIXME not sure how safe is reading directly from reds > SpiceServer *reds = red_channel_get_server(channel); > dcc = dcc_new(display, client, stream, migration, caps, > - spice_server_get_image_compression(reds), > reds_get_jpeg_state(reds), > + display->priv->image_compression, > reds_get_jpeg_state(reds), > reds_get_zlib_glz_state(reds)); > if (!dcc) { > return; > @@ -2656,3 +2656,9 @@ static void > display_channel_migrate(RedChannelClient *rcc) > DisplayChannel *display = > DISPLAY_CHANNEL(red_channel_client_get_channel(rcc)); > red_migrate_display(display, rcc); > } > + > +void display_channel_set_image_compression(DisplayChannel *display, > + SpiceImageCompression > image_compression) > +{ > + display->priv->image_compression = image_compression; > +} > diff --git a/server/display-channel.h b/server/display-channel.h > index 8dfdf523..6af9e129 100644 > --- a/server/display-channel.h > +++ b/server/display-channel.h > @@ -159,6 +159,8 @@ void > display_channel_reset_image_cache(DisplayChannel *self); > void display_channel_debug_oom(DisplayChannel *display, const char > *msg); > > void display_channel_update_qxl_running(DisplayChannel *display, > bool running); > +void display_channel_set_image_compression(DisplayChannel *display, > + SpiceImageCompression > image_compression); > > G_END_DECLS > > diff --git a/server/red-worker.c b/server/red-worker.c > index 7382e24d..bc63fc34 100644 > --- a/server/red-worker.c > +++ b/server/red-worker.c > @@ -76,8 +76,6 @@ struct RedWorker { > > RedMemSlotInfo mem_slots; > > - SpiceImageCompression image_compression; > - > uint32_t process_display_generation; > RedStatNode stat; > RedStatCounter wakeup_counter; > @@ -684,7 +682,7 @@ static void handle_dev_set_compression(void > *opaque, void *payload) > RedWorker *worker = opaque; > SpiceImageCompression image_compression = msg- > >image_compression; > > - worker->image_compression = image_compression; > + display_channel_set_image_compression(worker->display_channel, > image_compression); > > display_channel_compress_stats_print(worker->display_channel); > display_channel_compress_stats_reset(worker->display_channel); > @@ -1078,7 +1076,6 @@ RedWorker* red_worker_new(QXLInstance *qxl) > dispatcher_register_universal_handler(dispatcher, > worker_dispatcher_record); > } > > - worker->image_compression = > spice_server_get_image_compression(reds); > worker->driver_cap_monitors_config = 0; > char worker_str[SPICE_STAT_NODE_NAME_MAX]; > snprintf(worker_str, sizeof(worker_str), "display[%d]", worker- > >qxl->id & 0xff); > @@ -1120,6 +1117,8 @@ RedWorker* red_worker_new(QXLInstance *qxl) > init_info.n_surfac > es); > channel = RED_CHANNEL(worker->display_channel); > red_channel_init_stat_node(channel, &worker->stat, > "display_channel"); > + display_channel_set_image_compression(worker->display_channel, > + spice_server_get_image_com > pression(reds)); > > return worker; > } _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel