# HG changeset patch # User Vladimir Nadvornik # Date 1302290201 -7200 # Node ID d65759c868dc764e809edbd30b0618c9b26d9853 # Parent 213c2fa3ff194cb1e9e6aacf51a0f9b958028be7 fixed to compile with other libjpeg versions diff -r 213c2fa3ff19 -r d65759c868dc src/image_load_jpeg.c --- a/src/image_load_jpeg.c Sun Mar 27 19:22:29 2011 +0200 +++ b/src/image_load_jpeg.c Fri Apr 08 21:16:41 2011 +0200 @@ -220,6 +220,45 @@ } } + +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 @@ 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 @@ 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 ||