diff options
author | Alexander Larsson <alexl@redhat.com> | 2010-03-02 15:41:08 +0100 |
---|---|---|
committer | Alexander Larsson <alexl@redhat.com> | 2010-03-08 19:45:27 +0100 |
commit | c0fdcd1a10d0eae92fec9e00382b445d669c7428 (patch) | |
tree | 590429cdba9b115c90e5beaec90f1981ed513121 /common | |
parent | 04b35fe7ff6b09885a2af9ef8627b45b892e3fb0 (diff) | |
download | spice-c0fdcd1a10d0eae92fec9e00382b445d669c7428.tar.gz spice-c0fdcd1a10d0eae92fec9e00382b445d669c7428.tar.xz spice-c0fdcd1a10d0eae92fec9e00382b445d669c7428.zip |
Make canvas Glz decoder integration nicer
We use a dynamic interface similar to e.g. SpiceImageCache instead
of passing both function and opaque
Diffstat (limited to 'common')
-rw-r--r-- | common/cairo_canvas.c | 5 | ||||
-rw-r--r-- | common/cairo_canvas.h | 2 | ||||
-rw-r--r-- | common/canvas_base.c | 13 | ||||
-rw-r--r-- | common/canvas_base.h | 14 | ||||
-rw-r--r-- | common/gdi_canvas.c | 5 | ||||
-rw-r--r-- | common/gdi_canvas.h | 3 | ||||
-rw-r--r-- | common/gl_canvas.c | 5 | ||||
-rw-r--r-- | common/gl_canvas.h | 2 |
8 files changed, 27 insertions, 22 deletions
diff --git a/common/cairo_canvas.c b/common/cairo_canvas.c index addb3d47..ed815d19 100644 --- a/common/cairo_canvas.c +++ b/common/cairo_canvas.c @@ -2156,7 +2156,7 @@ CairoCanvas *canvas_create(pixman_image_t *image, int bits, CairoCanvas *canvas_create(pixman_image_t *image, int bits #endif #ifdef USE_GLZ - , void *glz_decoder_opaque, glz_decode_fn_t glz_decode + , SpiceGlzDecoder *glz_decoder #endif #ifndef CAIRO_CANVAS_NO_CHUNKS , void *get_virt_opaque, get_virt_fn_t get_virt, @@ -2183,8 +2183,7 @@ CairoCanvas *canvas_create(pixman_image_t *image, int bits #endif #ifdef USE_GLZ , - glz_decoder_opaque, - glz_decode + glz_decoder #endif #ifndef CAIRO_CANVAS_NO_CHUNKS , diff --git a/common/cairo_canvas.h b/common/cairo_canvas.h index 205c62cb..390c61cf 100644 --- a/common/cairo_canvas.h +++ b/common/cairo_canvas.h @@ -70,7 +70,7 @@ CairoCanvas *canvas_create(pixman_image_t *image, int bits, CairoCanvas *canvas_create(pixman_image_t *image, int bits #endif #ifdef USE_GLZ - , void *glz_decoder_opaque, glz_decode_fn_t glz_decode + , SpiceGlzDecoder *glz_decoder #endif #ifndef CAIRO_CANVAS_NO_CHUNKS , void *get_virt_opaque, get_virt_fn_t get_virt, diff --git a/common/canvas_base.c b/common/canvas_base.c index 23039eb3..8bac5923 100644 --- a/common/canvas_base.c +++ b/common/canvas_base.c @@ -154,8 +154,7 @@ typedef struct LzData { } LzData; typedef struct GlzData { - void *decoder_opaque; - glz_decode_fn_t decode; + SpiceGlzDecoder *decoder; LzDecodeUsrData decode_data; } GlzData; @@ -623,8 +622,9 @@ static pixman_image_t *canvas_get_glz(CanvasBase *canvas, LZImage *image) #ifdef WIN32 canvas->glz_data.decode_data.dc = canvas->dc; #endif - canvas->glz_data.decode(canvas->glz_data.decoder_opaque, image->lz_rgb.data, NULL, - &canvas->glz_data.decode_data); + canvas->glz_data.decoder->ops->decode(canvas->glz_data.decoder, + image->lz_rgb.data, NULL, + &canvas->glz_data.decode_data); /* global_decode calls alloc_lz_image, which sets canvas->glz_data.surface */ return (canvas->glz_data.decode_data.out_surface); } @@ -1547,7 +1547,7 @@ static int canvas_base_init(CanvasBase *canvas, int depth, static int canvas_base_init(CanvasBase *canvas, int depth #endif #ifdef USE_GLZ - , void *glz_decoder_opaque, glz_decode_fn_t glz_decode + , SpiceGlzDecoder *glz_decoder #endif #ifndef CAIRO_CANVAS_NO_CHUNKS , void *get_virt_opaque, get_virt_fn_t get_virt, @@ -1584,8 +1584,7 @@ static int canvas_base_init(CanvasBase *canvas, int depth } #endif #ifdef USE_GLZ - canvas->glz_data.decoder_opaque = glz_decoder_opaque; - canvas->glz_data.decode = glz_decode; + canvas->glz_data.decoder = glz_decoder; #endif if (depth == 16) { diff --git a/common/canvas_base.h b/common/canvas_base.h index 78ece624..7796245c 100644 --- a/common/canvas_base.h +++ b/common/canvas_base.h @@ -26,6 +26,7 @@ typedef struct _SpiceImageCache SpiceImageCache; typedef struct _SpicePaletteCache SpicePaletteCache; +typedef struct _SpiceGlzDecoder SpiceGlzDecoder; typedef struct { void (*put)(SpiceImageCache *cache, @@ -52,8 +53,17 @@ struct _SpicePaletteCache { SpicePaletteCacheOps *ops; }; -typedef void (*glz_decode_fn_t)(void *glz_decoder_opaque, uint8_t *data, - SpicePalette *plt, void *usr_data); +typedef struct { + void (*decode)(SpiceGlzDecoder *decoder, + uint8_t *data, + SpicePalette *plt, + void *usr_data); +} SpiceGlzDecoderOps; + +struct _SpiceGlzDecoder { + SpiceGlzDecoderOps *ops; +}; + #ifndef CAIRO_CANVAS_NO_CHUNKS typedef void *(*get_virt_fn_t)(void *get_virt_opaque, unsigned long addr, uint32_t add_size); typedef void (*validate_virt_fn_t)(void *validate_virt_opaque, unsigned long virt, diff --git a/common/gdi_canvas.c b/common/gdi_canvas.c index ae477db4..c4750a8e 100644 --- a/common/gdi_canvas.c +++ b/common/gdi_canvas.c @@ -1708,7 +1708,7 @@ GdiCanvas *gdi_canvas_create(HDC dc, int bits, GdiCanvas *gdi_canvas_create(HDC dc, int bits #endif #ifdef USE_GLZ - , void *glz_decoder_opaque, glz_decode_fn_t glz_decode + , SpiceGlzDecoder *glz_decoder #endif ) { @@ -1731,8 +1731,7 @@ GdiCanvas *gdi_canvas_create(HDC dc, int bits #endif #ifdef USE_GLZ , - glz_decoder_opaque, - glz_decode + glz_decoder #endif ); canvas->dc = dc; diff --git a/common/gdi_canvas.h b/common/gdi_canvas.h index d9b8d219..12082d83 100644 --- a/common/gdi_canvas.h +++ b/common/gdi_canvas.h @@ -62,8 +62,7 @@ void gdi_canvas_set_access_params(GdiCanvas *canvas, unsigned long base, unsigne GdiCanvas *gdi_canvas_create(HDC dc, class Mutex *lock, int bits, SpiceImageCache *bits_cache, SpicePaletteCache *palette_cache, - void *glz_decoder_opaque, - glz_decode_fn_t glz_decode); + SpiceGlzDecoder *glz_decoder); void gdi_canvas_destroy(GdiCanvas *canvas); diff --git a/common/gl_canvas.c b/common/gl_canvas.c index 076090e9..6b5eda97 100644 --- a/common/gl_canvas.c +++ b/common/gl_canvas.c @@ -812,7 +812,7 @@ GLCanvas *gl_canvas_create(void *usr_data, int width, int height, int depth, GLCanvas *gl_canvas_create(void *usr_data, int width, int height, int depth #endif #ifdef USE_GLZ - , void *glz_decoder_opaque, glz_decode_fn_t glz_decode + , SpiceGlzDecoder *glz_decoder #endif #ifndef CAIRO_CANVAS_NO_CHUNKS , void *get_virt_opaque, get_virt_fn_t get_virt, @@ -845,8 +845,7 @@ GLCanvas *gl_canvas_create(void *usr_data, int width, int height, int depth #endif #ifdef USE_GLZ , - glz_decoder_opaque, - glz_decode + glz_decoder #endif #ifndef CAIRO_CANVAS_NO_CHUNKS , diff --git a/common/gl_canvas.h b/common/gl_canvas.h index 39b27923..1c573407 100644 --- a/common/gl_canvas.h +++ b/common/gl_canvas.h @@ -65,7 +65,7 @@ GLCanvas *gl_canvas_create(void *usr_data, int width, int height, int depth, GLCanvas *gl_canvas_create(void *usr_data, int width, int height, int depth #endif #ifdef USE_GLZ - , void *glz_decoder_opaque, glz_decode_fn_t glz_decode + , SpiceGlzDecoder *glz_decoder #endif #ifndef CAIRO_CANVAS_NO_CHUNKS , void *get_virt_opaque, get_virt_fn_t get_virt, |