Encapsulate zlib information in ImageEncoders structure

This change is less clean the other similar patches as zlib and
glz require more steps.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
This commit is contained in:
Frediano Ziglio 2016-06-03 16:04:35 +01:00
parent 21a90ae986
commit c2bc754559
4 changed files with 16 additions and 16 deletions

View File

@ -386,14 +386,14 @@ static inline void image_encoders_init_lz4(ImageEncoders *enc)
}
#endif
static void dcc_init_zlib(DisplayChannelClient *dcc)
static void image_encoders_init_zlib(ImageEncoders *enc)
{
dcc->zlib_data.usr.more_space = zlib_usr_more_space;
dcc->zlib_data.usr.more_input = zlib_usr_more_input;
enc->zlib_data.usr.more_space = zlib_usr_more_space;
enc->zlib_data.usr.more_input = zlib_usr_more_input;
dcc->zlib = zlib_encoder_create(&dcc->zlib_data.usr, ZLIB_DEFAULT_COMPRESSION_LEVEL);
enc->zlib = zlib_encoder_create(&enc->zlib_data.usr, ZLIB_DEFAULT_COMPRESSION_LEVEL);
if (!dcc->zlib) {
if (!enc->zlib) {
spice_critical("create zlib encoder failed");
}
}
@ -409,10 +409,10 @@ void dcc_encoders_init(DisplayChannelClient *dcc)
#ifdef USE_LZ4
image_encoders_init_lz4(enc);
#endif
dcc_init_zlib(dcc);
image_encoders_init_zlib(enc);
// todo: tune level according to bandwidth
dcc->zlib_level = ZLIB_DEFAULT_COMPRESSION_LEVEL;
enc->zlib_level = ZLIB_DEFAULT_COMPRESSION_LEVEL;
}
void dcc_encoders_free(DisplayChannelClient *dcc)
@ -428,8 +428,8 @@ void dcc_encoders_free(DisplayChannelClient *dcc)
lz4_encoder_destroy(enc->lz4);
enc->lz4 = NULL;
#endif
zlib_encoder_destroy(dcc->zlib);
dcc->zlib = NULL;
zlib_encoder_destroy(enc->zlib);
enc->zlib = NULL;
}
/* Remove from the to_free list and the instances_list.

View File

@ -177,6 +177,11 @@ struct ImageEncoders {
Lz4Data lz4_data;
Lz4EncoderContext *lz4;
#endif
int zlib_level;
ZlibData zlib_data;
ZlibEncoder *zlib;
};
typedef struct compress_send_data_t {

View File

@ -746,14 +746,14 @@ static int dcc_compress_image_glz(DisplayChannelClient *dcc,
goto glz;
}
stat_start_time_init(&start_time, &display_channel->zlib_glz_stat);
zlib_data = &dcc->zlib_data;
zlib_data = &dcc->encoders.zlib_data;
encoder_data_init(&zlib_data->data);
zlib_data->data.u.compressed_data.next = glz_data->data.bufs_head;
zlib_data->data.u.compressed_data.size_left = glz_size;
zlib_size = zlib_encode(dcc->zlib, dcc->zlib_level,
zlib_size = zlib_encode(dcc->encoders.zlib, dcc->encoders.zlib_level,
glz_size, zlib_data->data.bufs_head->buf.bytes,
sizeof(zlib_data->data.bufs_head->buf));

View File

@ -63,11 +63,6 @@ struct DisplayChannelClient {
ImageEncoders encoders;
int zlib_level;
ZlibData zlib_data;
ZlibEncoder *zlib;
int expect_init;
PixmapCache *pixmap_cache;