177 lines
4.6 KiB
Diff
177 lines
4.6 KiB
Diff
Source: from Gentoo, original author unknown
|
|
Upstream: no
|
|
Reason: unbundling jpeg
|
|
|
|
--- 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;
|