| --- openarena-engine-source-0.8.8/Makefile |
| +++ openarena-engine-source-0.8.8/Makefile |
| @@ -1406,41 +1406,7 @@ |
| $(B)/client/l_script.o \ |
| $(B)/client/l_struct.o \ |
| \ |
| - $(B)/client/jcapimin.o \ |
| - $(B)/client/jcapistd.o \ |
| - $(B)/client/jccoefct.o \ |
| - $(B)/client/jccolor.o \ |
| - $(B)/client/jcdctmgr.o \ |
| - $(B)/client/jchuff.o \ |
| - $(B)/client/jcinit.o \ |
| - $(B)/client/jcmainct.o \ |
| - $(B)/client/jcmarker.o \ |
| - $(B)/client/jcmaster.o \ |
| - $(B)/client/jcomapi.o \ |
| - $(B)/client/jcparam.o \ |
| - $(B)/client/jcphuff.o \ |
| - $(B)/client/jcprepct.o \ |
| - $(B)/client/jcsample.o \ |
| - $(B)/client/jdapimin.o \ |
| - $(B)/client/jdapistd.o \ |
| $(B)/client/jdatasrc.o \ |
| - $(B)/client/jdcoefct.o \ |
| - $(B)/client/jdcolor.o \ |
| - $(B)/client/jddctmgr.o \ |
| - $(B)/client/jdhuff.o \ |
| - $(B)/client/jdinput.o \ |
| - $(B)/client/jdmainct.o \ |
| - $(B)/client/jdmarker.o \ |
| - $(B)/client/jdmaster.o \ |
| - $(B)/client/jdpostct.o \ |
| - $(B)/client/jdsample.o \ |
| - $(B)/client/jdtrans.o \ |
| - $(B)/client/jerror.o \ |
| - $(B)/client/jfdctflt.o \ |
| - $(B)/client/jidctflt.o \ |
| - $(B)/client/jmemmgr.o \ |
| - $(B)/client/jmemnobs.o \ |
| - $(B)/client/jutils.o \ |
| \ |
| $(B)/client/tr_animation.o \ |
| $(B)/client/tr_backend.o \ |
| --- openarena-engine-source-0.8.8/code/jpeg-6b/jdatasrc.c |
| +++ openarena-engine-source-0.8.8/code/jpeg-6b/jdatasrc.c |
| @@ -15,9 +15,15 @@ |
| */ |
| |
| /* this is not a core library module, so it doesn't define JPEG_INTERNALS */ |
| -#include "jinclude.h" |
| -#include "jpeglib.h" |
| -#include "jerror.h" |
| +#include <stdio.h> |
| +#include <string.h> |
| +#include <jpeglib.h> |
| +#include <jerror.h> |
| +#undef METHODDEF |
| +#define METHODDEF static |
| +#undef GLOBAL |
| +#define GLOBAL |
| +#define SIZEOF(object) ((size_t) sizeof(object)) |
| |
| #ifndef MIN |
| #define MIN(a, b) ((a)<(b)?(a):(b)) |
| @@ -44,7 +50,7 @@ |
| * before any data is actually read. |
| */ |
| |
| -METHODDEF(void) |
| +METHODDEF void |
| init_source (j_decompress_ptr cinfo) |
| { |
| my_src_ptr src = (my_src_ptr) cinfo->src; |
| @@ -90,7 +96,7 @@ |
| * the front of the buffer rather than discarding it. |
| */ |
| |
| -METHODDEF(boolean) |
| +METHODDEF boolean |
| fill_input_buffer (j_decompress_ptr cinfo) |
| { |
| my_src_ptr src = (my_src_ptr) cinfo->src; |
| @@ -129,7 +135,7 @@ |
| * buffer is the application writer's problem. |
| */ |
| |
| -METHODDEF(void) |
| +METHODDEF void |
| skip_input_data (j_decompress_ptr cinfo, long num_bytes) |
| { |
| my_src_ptr src = (my_src_ptr) cinfo->src; |
| @@ -170,7 +176,7 @@ |
| * for error exit. |
| */ |
| |
| -METHODDEF(void) |
| +METHODDEF void |
| term_source (j_decompress_ptr cinfo) |
| { |
| /* no work necessary here */ |
| @@ -183,8 +189,8 @@ |
| * for closing it after finishing decompression. |
| */ |
| |
| -GLOBAL(void) |
| -jpeg_mem_src (j_decompress_ptr cinfo, unsigned char *inbuf, size_t size) |
| +GLOBAL void |
| +jpeg_mem_src (j_decompress_ptr cinfo, unsigned char *inbuf, unsigned long size) |
| { |
| my_src_ptr src; |
| |
| --- openarena-engine-source-0.8.8/code/renderer/tr_image_jpg.c |
| +++ openarena-engine-source-0.8.8/code/renderer/tr_image_jpg.c |
| @@ -31,7 +31,7 @@ |
| */ |
| |
| #define JPEG_INTERNALS |
| -#include "../jpeg-6b/jpeglib.h" |
| +#include <jpeglib.h> |
| |
| void R_LoadJPG( const char *filename, unsigned char **pic, int *width, int *height ) { |
| /* This struct contains the JPEG decompression parameters and pointers to |
| @@ -131,7 +131,10 @@ |
| } |
| |
| memcount = pixelcount * 4; |
| - row_stride = cinfo.output_width * cinfo.output_components; |
| + if (3 == cinfo.output_components) |
| + row_stride = cinfo.output_width * 4; |
| + else |
| + row_stride = cinfo.output_width * cinfo.output_components; |
| |
| out = ri.Malloc(memcount); |
| |
| @@ -144,14 +147,26 @@ |
| /* Here we use the library's state variable cinfo.output_scanline as the |
| * loop counter, so that we don't have to keep track ourselves. |
| */ |
| + buf = out; |
| while (cinfo.output_scanline < cinfo.output_height) { |
| /* jpeg_read_scanlines expects an array of pointers to scanlines. |
| * Here the array is only one element long, but you could ask for |
| * more than one scanline at a time if that's more convenient. |
| */ |
| - buf = ((out+(row_stride*cinfo.output_scanline))); |
| buffer = &buf; |
| (void) jpeg_read_scanlines(&cinfo, buffer, 1); |
| + if (3 == cinfo.output_components) { |
| + /* turn RGB into RGBA */ |
| + int ioffset = cinfo.output_width * 3 - 1; |
| + int ooffset = cinfo.output_width * 4 - 1; |
| + do { |
| + buf[ooffset--] = 255; |
| + buf[ooffset--] = buf[ioffset--]; |
| + buf[ooffset--] = buf[ioffset--]; |
| + buf[ooffset--] = buf[ioffset--]; |
| + } while (ioffset > 0); |
| + } |
| + buf += row_stride; |
| } |
| |
| buf = out; |
| @@ -176,7 +191,7 @@ |
| buf[--dindex] = greyshade; |
| } while(sindex); |
| } |
| - else |
| + else if (4 == cinfo.output_components) |
| { |
| // clear all the alphas to 255 |
| int i; |