From: Vladimir Nadvornik Date: Fri, 8 Apr 2011 19:16:41 +0000 (+0200) Subject: fixed to compile with other libjpeg versions X-Git-Tag: 1.1~51 X-Git-Url: http://geeqie.org/cgi-bin/gitweb.cgi?p=geeqie.git;a=commitdiff_plain;h=e5235578ba189827610cec22c9ca8bc17c433113 fixed to compile with other libjpeg versions --- diff --git a/src/image_load_jpeg.c b/src/image_load_jpeg.c index 81b663c8..5a878070 100644 --- a/src/image_load_jpeg.c +++ b/src/image_load_jpeg.c @@ -220,6 +220,45 @@ void image_loader_jpeg_read_scanline(struct jpeg_decompress_struct *cinfo, gucha } } + +static void init_source (j_decompress_ptr cinfo) {} +static boolean fill_input_buffer (j_decompress_ptr cinfo) +{ + ERREXIT(cinfo, JERR_INPUT_EMPTY); +} +static void skip_input_data (j_decompress_ptr cinfo, long num_bytes) +{ + struct jpeg_source_mgr* src = (struct jpeg_source_mgr*) cinfo->src; + + if (num_bytes > 0) + { + src->next_input_byte += (size_t) num_bytes; + src->bytes_in_buffer -= (size_t) num_bytes; + } +} +static void term_source (j_decompress_ptr cinfo) {} +static void set_mem_src (j_decompress_ptr cinfo, void* buffer, long nbytes) +{ + struct jpeg_source_mgr* src; + + if (cinfo->src == NULL) + { /* first time for this JPEG object? */ + cinfo->src = (struct jpeg_source_mgr *) (*cinfo->mem->alloc_small) ( + (j_common_ptr) cinfo, JPOOL_PERMANENT, + sizeof(struct jpeg_source_mgr)); + } + + src = (struct jpeg_source_mgr*) cinfo->src; + src->init_source = init_source; + src->fill_input_buffer = fill_input_buffer; + src->skip_input_data = skip_input_data; + src->resync_to_restart = jpeg_resync_to_restart; /* use default method */ + src->term_source = term_source; + src->bytes_in_buffer = nbytes; + src->next_input_byte = (JOCTET*)buffer; +} + + static gboolean image_loader_jpeg_load (gpointer loader, const guchar *buf, gsize count, GError **error) { ImageLoaderJpeg *lj = (ImageLoaderJpeg *) loader; @@ -264,7 +303,7 @@ static gboolean image_loader_jpeg_load (gpointer loader, const guchar *buf, gsiz jpeg_create_decompress(&cinfo); - jpeg_mem_src(&cinfo, (unsigned char *)buf, count); + set_mem_src(&cinfo, (unsigned char *)buf, count); jpeg_read_header(&cinfo, TRUE); @@ -272,7 +311,7 @@ static gboolean image_loader_jpeg_load (gpointer loader, const guchar *buf, gsiz if (lj->stereo) { jpeg_create_decompress(&cinfo2); - jpeg_mem_src(&cinfo2, stereo_buf2, stereo_length); + set_mem_src(&cinfo2, stereo_buf2, stereo_length); jpeg_read_header(&cinfo2, TRUE); if (cinfo.image_width != cinfo2.image_width ||