summaryrefslogtreecommitdiffstats
path: root/common/canvas_base.c
diff options
context:
space:
mode:
authorAlexander Larsson <alexl@redhat.com>2010-03-02 15:41:08 +0100
committerAlexander Larsson <alexl@redhat.com>2010-03-08 19:45:27 +0100
commitc0fdcd1a10d0eae92fec9e00382b445d669c7428 (patch)
tree590429cdba9b115c90e5beaec90f1981ed513121 /common/canvas_base.c
parent04b35fe7ff6b09885a2af9ef8627b45b892e3fb0 (diff)
downloadspice-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/canvas_base.c')
-rw-r--r--common/canvas_base.c13
1 files changed, 6 insertions, 7 deletions
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) {