changeset 1911:225b72ae0482

fixed to compile with other libjpeg versions
author Vladimir Nadvornik <nadvornik@suse.cz>
date Fri, 08 Apr 2011 21:16:41 +0200
parents 3f0837f71acc
children 4417578c55f9
files src/image_load_jpeg.c
diffstat 1 files changed, 41 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- 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 ||