---
server/cache-item.tmpl.c | 3 ++-
server/dcc.c | 4 ++--
server/image-cache.c | 5 +++--
server/image-encoders.c | 26 +++++++++++++-------------
server/mjpeg-encoder.c | 12 ++++++------
server/pixmap-cache.c | 2 +-
6 files changed, 27 insertions(+), 25 deletions(-)
diff --git a/server/cache-item.tmpl.c b/server/cache-item.tmpl.c
index f119a9ee4..8e18f9b1b 100644
--- a/server/cache-item.tmpl.c
+++ b/server/cache-item.tmpl.c
@@ -89,7 +89,8 @@ static int FUNC_NAME(add)(CHANNELCLIENT *channel_client, uint64_t id, size_t siz
channel_client->priv->VAR_NAME(available) -= size;
SPICE_VERIFY(SPICE_OFFSETOF(RedCacheItem, u.cache_data.lru_link) == 0);
while (channel_client->priv->VAR_NAME(available) < 0) {
- RedCacheItem *tail = (RedCacheItem *)ring_get_tail(&channel_client->priv->VAR_NAME(lru));
+ RedCacheItem *tail = SPICE_CONTAINEROF(ring_get_tail(&channel_client->priv->VAR_NAME(lru)),
+ RedCacheItem, u.cache_data.lru_link);
if (!tail) {
channel_client->priv->VAR_NAME(available) += size;
g_free(item);
diff --git a/server/dcc.c b/server/dcc.c
index acc1ca38c..71d09b77f 100644
--- a/server/dcc.c
+++ b/server/dcc.c
@@ -968,8 +968,8 @@ bool dcc_pixmap_cache_unlocked_add(DisplayChannelClient *dcc, uint64_t id,
NewCacheItem **now;
SPICE_VERIFY(SPICE_OFFSETOF(NewCacheItem, lru_link) == 0);
- if (!(tail = (NewCacheItem *)ring_get_tail(&cache->lru)) ||
- tail->sync[dcc->priv->id] == serial) {
+ if (!(tail = SPICE_CONTAINEROF(ring_get_tail(&cache->lru), NewCacheItem, lru_link)) ||
+ tail->sync[dcc->priv->id] == serial) {
cache->available += size;
g_free(item);
return FALSE;
diff --git a/server/image-cache.c b/server/image-cache.c
index 2ca4d4b67..4881f4d92 100644
--- a/server/image-cache.c
+++ b/server/image-cache.c
@@ -78,7 +78,8 @@ static void image_cache_put(SpiceImageCache *spice_cache, uint64_t id, pixman_im
#ifndef IMAGE_CACHE_AGE
if (cache->num_items == IMAGE_CACHE_MAX_ITEMS) {
SPICE_VERIFY(SPICE_OFFSETOF(ImageCacheItem, lru_link) == 0);
- ImageCacheItem *tail = (ImageCacheItem *)ring_get_tail(&cache->lru);
+ ImageCacheItem *tail =
+ SPICE_CONTAINEROF(ring_get_tail(&cache->lru), ImageCacheItem, lru_link);
spice_assert(tail);
image_cache_remove(cache, tail);
}
@@ -133,7 +134,7 @@ void image_cache_reset(ImageCache *cache)
ImageCacheItem *item;
SPICE_VERIFY(SPICE_OFFSETOF(ImageCacheItem, lru_link) == 0);
- while ((item = (ImageCacheItem *)ring_get_head(&cache->lru))) {
+ while ((item = SPICE_CONTAINEROF(ring_get_head(&cache->lru), ImageCacheItem, lru_link))) {
image_cache_remove(cache, item);
}
#ifdef IMAGE_CACHE_AGE
diff --git a/server/image-encoders.c b/server/image-encoders.c
index 306c6dca6..d4d486c36 100644
--- a/server/image-encoders.c
+++ b/server/image-encoders.c
@@ -89,7 +89,7 @@ static void image_encoders_release_glz(ImageEncoders *enc);
static SPICE_GNUC_NORETURN SPICE_GNUC_PRINTF(2, 3) void
quic_usr_error(QuicUsrContext *usr, const char *fmt, ...)
{
- EncoderData *usr_data = &(((QuicData *)usr)->data);
+ EncoderData *usr_data = &(SPICE_CONTAINEROF(usr, QuicData, usr)->data);
va_list ap;
char message_buf[ENCODER_MESSAGE_SIZE];
@@ -104,7 +104,7 @@ quic_usr_error(QuicUsrContext *usr, const char *fmt, ...)
static SPICE_GNUC_NORETURN SPICE_GNUC_PRINTF(2, 3) void
lz_usr_error(LzUsrContext *usr, const char *fmt, ...)
{
- EncoderData *usr_data = &(((LzData *)usr)->data);
+ EncoderData *usr_data = &(SPICE_CONTAINEROF(usr, LzData, usr)->data);
va_list ap;
char message_buf[ENCODER_MESSAGE_SIZE];
@@ -233,25 +233,25 @@ static int encoder_usr_more_space(EncoderData *enc_data, uint8_t **io_ptr)
static int quic_usr_more_space(QuicUsrContext *usr, uint32_t **io_ptr, int rows_completed)
{
- EncoderData *usr_data = &(((QuicData *)usr)->data);
+ EncoderData *usr_data = &(SPICE_CONTAINEROF(usr, QuicData, usr)->data);
return encoder_usr_more_space(usr_data, (uint8_t **)io_ptr) / sizeof(uint32_t);
}
static int lz_usr_more_space(LzUsrContext *usr, uint8_t **io_ptr)
{
- EncoderData *usr_data = &(((LzData *)usr)->data);
+ EncoderData *usr_data = &(SPICE_CONTAINEROF(usr, LzData, usr)->data);
return encoder_usr_more_space(usr_data, io_ptr);
}
static int glz_usr_more_space(GlzEncoderUsrContext *usr, uint8_t **io_ptr)
{
- EncoderData *usr_data = &(((GlzData *)usr)->data);
+ EncoderData *usr_data = &(SPICE_CONTAINEROF(usr, GlzData, usr)->data);
return encoder_usr_more_space(usr_data, io_ptr);
}
static int jpeg_usr_more_space(JpegEncoderUsrContext *usr, uint8_t **io_ptr)
{
- EncoderData *usr_data = &(((JpegData *)usr)->data);
+ EncoderData *usr_data = &(SPICE_CONTAINEROF(usr, JpegData, usr)->data);
return encoder_usr_more_space(usr_data, io_ptr);
}
@@ -265,7 +265,7 @@ static int lz4_usr_more_space(Lz4EncoderUsrContext *usr, uint8_t **io_ptr)
static int zlib_usr_more_space(ZlibEncoderUsrContext *usr, uint8_t **io_ptr)
{
- EncoderData *usr_data = &(((ZlibData *)usr)->data);
+ EncoderData *usr_data = &(SPICE_CONTAINEROF(usr, ZlibData, usr)->data);
return encoder_usr_more_space(usr_data, io_ptr);
}
@@ -301,25 +301,25 @@ static inline int encoder_usr_more_lines(EncoderData *enc_data, uint8_t **lines)
static int quic_usr_more_lines(QuicUsrContext *usr, uint8_t **lines)
{
- EncoderData *usr_data = &(((QuicData *)usr)->data);
+ EncoderData *usr_data = &(SPICE_CONTAINEROF(usr, QuicData, usr)->data);
return encoder_usr_more_lines(usr_data, lines);
}
static int lz_usr_more_lines(LzUsrContext *usr, uint8_t **lines)
{
- EncoderData *usr_data = &(((LzData *)usr)->data);
+ EncoderData *usr_data = &(SPICE_CONTAINEROF(usr, LzData, usr)->data);
return encoder_usr_more_lines(usr_data, lines);
}
static int glz_usr_more_lines(GlzEncoderUsrContext *usr, uint8_t **lines)
{
- EncoderData *usr_data = &(((GlzData *)usr)->data);
+ EncoderData *usr_data = &(SPICE_CONTAINEROF(usr, GlzData, usr)->data);
return encoder_usr_more_lines(usr_data, lines);
}
static int jpeg_usr_more_lines(JpegEncoderUsrContext *usr, uint8_t **lines)
{
- EncoderData *usr_data = &(((JpegData *)usr)->data);
+ EncoderData *usr_data = &(SPICE_CONTAINEROF(usr, JpegData, usr)->data);
return encoder_usr_more_lines(usr_data, lines);
}
@@ -333,7 +333,7 @@ static int lz4_usr_more_lines(Lz4EncoderUsrContext *usr, uint8_t **lines)
static int zlib_usr_more_input(ZlibEncoderUsrContext *usr, uint8_t** input)
{
- EncoderData *usr_data = &(((ZlibData *)usr)->data);
+ EncoderData *usr_data = &(SPICE_CONTAINEROF(usr, ZlibData, usr)->data);
int buf_size;
if (!usr_data->u.compressed_data.next) {
@@ -386,7 +386,7 @@ static void image_encoders_init_lz(ImageEncoders *enc)
static void glz_usr_free_image(GlzEncoderUsrContext *usr, GlzUsrImageContext *image)
{
- GlzData *lz_data = (GlzData *)usr;
+ GlzData *lz_data = SPICE_CONTAINEROF(usr, GlzData, usr);
GlzDrawableInstanceItem *glz_drawable_instance = (GlzDrawableInstanceItem *)image;
ImageEncoders *drawable_enc = glz_drawable_instance->glz_drawable->encoders;
ImageEncoders *this_enc = SPICE_CONTAINEROF(lz_data, ImageEncoders, glz_data);
diff --git a/server/mjpeg-encoder.c b/server/mjpeg-encoder.c
index 4a02e7c8b..e629adae4 100644
--- a/server/mjpeg-encoder.c
+++ b/server/mjpeg-encoder.c
@@ -206,7 +206,7 @@ static MJpegVideoBuffer* create_mjpeg_video_buffer(void)
static void mjpeg_encoder_destroy(VideoEncoder *video_encoder)
{
- MJpegEncoder *encoder = (MJpegEncoder*)video_encoder;
+ MJpegEncoder *encoder = SPICE_CONTAINEROF(video_encoder, MJpegEncoder, base);
g_free(encoder->cinfo.dest);
jpeg_destroy_compress(&encoder->cinfo);
g_free(encoder->row);
@@ -931,7 +931,7 @@ static int mjpeg_encoder_encode_frame(VideoEncoder *video_encoder,
gpointer bitmap_opaque,
VideoBuffer **outbuf)
{
- MJpegEncoder *encoder = (MJpegEncoder*)video_encoder;
+ MJpegEncoder *encoder = SPICE_CONTAINEROF(video_encoder, MJpegEncoder, base);
MJpegVideoBuffer *buffer = create_mjpeg_video_buffer();
if (!buffer) {
return VIDEO_ENCODER_FRAME_UNSUPPORTED;
@@ -1191,7 +1191,7 @@ static void mjpeg_encoder_client_stream_report(VideoEncoder *video_encoder,
int32_t end_frame_delay,
uint32_t audio_delay)
{
- MJpegEncoder *encoder = (MJpegEncoder*)video_encoder;
+ MJpegEncoder *encoder = SPICE_CONTAINEROF(video_encoder, MJpegEncoder, base);
MJpegEncoderRateControl *rate_control = &encoder->rate_control;
MJpegEncoderClientState *client_state = &rate_control->client_state;
uint64_t avg_enc_size = 0;
@@ -1289,7 +1289,7 @@ static void mjpeg_encoder_client_stream_report(VideoEncoder *video_encoder,
static void mjpeg_encoder_notify_server_frame_drop(VideoEncoder *video_encoder)
{
- MJpegEncoder *encoder = (MJpegEncoder*)video_encoder;
+ MJpegEncoder *encoder = SPICE_CONTAINEROF(video_encoder, MJpegEncoder, base);
encoder->rate_control.server_state.num_frames_dropped++;
mjpeg_encoder_process_server_drops(encoder);
}
@@ -1328,14 +1328,14 @@ static void mjpeg_encoder_process_server_drops(MJpegEncoder *encoder)
static uint64_t mjpeg_encoder_get_bit_rate(VideoEncoder *video_encoder)
{
- MJpegEncoder *encoder = (MJpegEncoder*)video_encoder;
+ MJpegEncoder *encoder = SPICE_CONTAINEROF(video_encoder, MJpegEncoder, base);
return encoder->rate_control.byte_rate * 8;
}
static void mjpeg_encoder_get_stats(VideoEncoder *video_encoder,
VideoEncoderStats *stats)
{
- MJpegEncoder *encoder = (MJpegEncoder*)video_encoder;
+ MJpegEncoder *encoder = SPICE_CONTAINEROF(video_encoder, MJpegEncoder, base);
spice_assert(encoder != NULL && stats != NULL);
stats->starting_bit_rate = encoder->starting_bit_rate;
stats->cur_bit_rate = mjpeg_encoder_get_bit_rate(video_encoder);
diff --git a/server/pixmap-cache.c b/server/pixmap-cache.c
index 489fe0bf6..49659ea41 100644
--- a/server/pixmap-cache.c
+++ b/server/pixmap-cache.c
@@ -45,7 +45,7 @@ void pixmap_cache_clear(PixmapCache *cache)
}
SPICE_VERIFY(SPICE_OFFSETOF(NewCacheItem, lru_link) == 0);
- while ((item = (NewCacheItem *)ring_get_head(&cache->lru))) {
+ while ((item = SPICE_CONTAINEROF(ring_get_head(&cache->lru), NewCacheItem, lru_link))) {
ring_remove(&item->lru_link);
g_free(item);
}