[Spice-devel] [PATCH spice-server 1/2] jpeg-encoder: Avoid useless conversions

Christophe Fergeau cfergeau at redhat.com
Tue Jun 26 12:55:54 UTC 2018


On Tue, Jun 19, 2018 at 11:05:23AM +0100, Frediano Ziglio wrote:
> Define JpegEncoderContext as an abstract structure.
> This allows to reduce casts.
> Also remove some alignment warnings on some architecture like mips.

Hmm indeed, the indirection is a bit odd.. 
Acked-by: Christophe Fergeau <cfergeau at redhat.com>

Christophe

> 
> Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
> ---
>  server/jpeg-encoder.c | 14 +++++++-------
>  server/jpeg-encoder.h |  2 +-
>  2 files changed, 8 insertions(+), 8 deletions(-)
> 
> diff --git a/server/jpeg-encoder.c b/server/jpeg-encoder.c
> index a6eaf86f..e6591876 100644
> --- a/server/jpeg-encoder.c
> +++ b/server/jpeg-encoder.c
> @@ -24,7 +24,7 @@
>  #include "red-common.h"
>  #include "jpeg-encoder.h"
>  
> -typedef struct JpegEncoder {
> +struct JpegEncoderContext {
>      JpegEncoderUsrContext *usr;
>  
>      struct jpeg_destination_mgr dest_mgr;
> @@ -39,7 +39,9 @@ typedef struct JpegEncoder {
>          unsigned int out_size;
>          void (*convert_line_to_RGB24) (void *line, int width, uint8_t **out_line);
>      } cur_image;
> -} JpegEncoder;
> +};
> +
> +typedef struct JpegEncoderContext JpegEncoder;
>  
>  /* jpeg destination manager callbacks */
>  
> @@ -97,12 +99,12 @@ JpegEncoderContext* jpeg_encoder_create(JpegEncoderUsrContext *usr)
>      jpeg_create_compress(&enc->cinfo);
>      enc->cinfo.client_data = enc;
>      enc->cinfo.dest = &enc->dest_mgr;
> -    return (JpegEncoderContext*)enc;
> +    return enc;
>  }
>  
>  void jpeg_encoder_destroy(JpegEncoderContext* encoder)
>  {
> -    jpeg_destroy_compress(&((JpegEncoder*)encoder)->cinfo);
> +    jpeg_destroy_compress(&encoder->cinfo);
>      g_free(encoder);
>  }
>  
> @@ -202,12 +204,10 @@ static void do_jpeg_encode(JpegEncoder *jpeg, uint8_t *lines, unsigned int num_l
>      }
>  }
>  
> -int jpeg_encode(JpegEncoderContext *jpeg, int quality, JpegEncoderImageType type,
> +int jpeg_encode(JpegEncoderContext *enc, int quality, JpegEncoderImageType type,
>                  int width, int height, uint8_t *lines, unsigned int num_lines, int stride,
>                  uint8_t *io_ptr, unsigned int num_io_bytes)
>  {
> -    JpegEncoder *enc = (JpegEncoder *)jpeg;
> -
>      enc->cur_image.type = type;
>      enc->cur_image.width = width;
>      enc->cur_image.height = height;
> diff --git a/server/jpeg-encoder.h b/server/jpeg-encoder.h
> index 665cf9f7..0a1c2e78 100644
> --- a/server/jpeg-encoder.h
> +++ b/server/jpeg-encoder.h
> @@ -43,7 +43,7 @@ typedef enum {
>      JPEG_IMAGE_TYPE_BGRX32,
>  } JpegEncoderImageType;
>  
> -typedef void* JpegEncoderContext;
> +typedef struct JpegEncoderContext JpegEncoderContext;
>  typedef struct JpegEncoderUsrContext JpegEncoderUsrContext;
>  
>  struct JpegEncoderUsrContext {
> -- 
> 2.17.1
> 
> _______________________________________________
> Spice-devel mailing list
> Spice-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/spice-devel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/spice-devel/attachments/20180626/e0ae6f86/attachment.sig>


More information about the Spice-devel mailing list