public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] gentoo-x86 commit in games-fps/openarena/files: openarena-0.8.5-bots-strcpy-fix.patch openarena-0.8.5-makefile.patch openarena-0.8.5-unbundling.patch
@ 2010-09-09  7:14 Michael Sterrett (mr_bones_)
  0 siblings, 0 replies; only message in thread
From: Michael Sterrett (mr_bones_) @ 2010-09-09  7:14 UTC (permalink / raw
  To: gentoo-commits

mr_bones_    10/09/09 07:14:12

  Added:                openarena-0.8.5-bots-strcpy-fix.patch
                        openarena-0.8.5-makefile.patch
                        openarena-0.8.5-unbundling.patch
  Log:
  version bump with work from Cesar Garcia in bug #306617
  (Portage version: 2.1.8.3/cvs/Linux i686)

Revision  Changes    Path
1.1                  games-fps/openarena/files/openarena-0.8.5-bots-strcpy-fix.patch

file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/games-fps/openarena/files/openarena-0.8.5-bots-strcpy-fix.patch?rev=1.1&view=markup
plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/games-fps/openarena/files/openarena-0.8.5-bots-strcpy-fix.patch?rev=1.1&content-type=text/plain

Index: openarena-0.8.5-bots-strcpy-fix.patch
===================================================================
diff -up quake3-1.36/code/botlib/l_precomp.c~ quake3-1.36/code/botlib/l_precomp.c
--- quake3-1.36/code/botlib/l_precomp.c~	2009-04-27 08:42:37.000000000 +0200
+++ quake3-1.36/code/botlib/l_precomp.c	2009-11-03 21:03:08.000000000 +0100
@@ -948,7 +948,7 @@ void PC_ConvertPath(char *path)
 		if ((*ptr == '\\' || *ptr == '/') &&
 				(*(ptr+1) == '\\' || *(ptr+1) == '/'))
 		{
-			strcpy(ptr, ptr+1);
+			memmove(ptr, ptr+1, strlen(ptr));
 		} //end if
 		else
 		{
diff -up quake3-1.36/code/botlib/l_script.c~ quake3-1.36/code/botlib/l_script.c
--- quake3-1.36/code/botlib/l_script.c~	2009-04-27 08:42:37.000000000 +0200
+++ quake3-1.36/code/botlib/l_script.c	2009-11-03 21:06:11.000000000 +0100
@@ -1118,7 +1118,7 @@ void StripDoubleQuotes(char *string)
 {
 	if (*string == '\"')
 	{
-		strcpy(string, string+1);
+		memmove(string, string+1, strlen(string));
 	} //end if
 	if (string[strlen(string)-1] == '\"')
 	{
@@ -1135,7 +1135,7 @@ void StripSingleQuotes(char *string)
 {
 	if (*string == '\'')
 	{
-		strcpy(string, string+1);
+		memmove(string, string+1, strlen(string));
 	} //end if
 	if (string[strlen(string)-1] == '\'')
 	{



1.1                  games-fps/openarena/files/openarena-0.8.5-makefile.patch

file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/games-fps/openarena/files/openarena-0.8.5-makefile.patch?rev=1.1&view=markup
plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/games-fps/openarena/files/openarena-0.8.5-makefile.patch?rev=1.1&content-type=text/plain

Index: openarena-0.8.5-makefile.patch
===================================================================
--- openarena-engine-0.8.1/Makefile	2008-08-09 22:22:37.000000000 +0200
+++ openarena-engine-0.8.1/Makefile.new	2009-01-07 19:33:31.000000000 +0100
@@ -67,6 +67,10 @@
 
 ifndef ARCH
 ARCH=$(COMPILE_ARCH)
+else
+  ifeq ($(ARCH),amd64)
+    ARCH=x86_64
+  endif
 endif
 export ARCH
 
@@ -231,8 +231,7 @@
   endif
   endif
 
-  BASE_CFLAGS = -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes \
-    -pipe -DUSE_ICON $(shell sdl-config --cflags)
+  BASE_CFLAGS = -fno-strict-aliasing -DUSE_ICON $(shell sdl-config --cflags) -I.
 
   ifeq ($(USE_OPENAL),1)
     BASE_CFLAGS += -DUSE_OPENAL
@@ -283,29 +283,29 @@
   SHLIBCFLAGS=-fPIC
   SHLIBLDFLAGS=-shared $(LDFLAGS)
 
-  THREAD_LDFLAGS=-lpthread
-  LDFLAGS=-ldl -lm
+  THREAD_LIBS=-lpthread
+  LDLIBS=-ldl -lm -lz
 
-  CLIENT_LDFLAGS=$(shell sdl-config --libs) -lGL
+  CLIENT_LIBS=$(shell sdl-config --libs) -lGL -ljpeg
 
   ifeq ($(USE_OPENAL),1)
     ifneq ($(USE_OPENAL_DLOPEN),1)
-      CLIENT_LDFLAGS += -lopenal
+      CLIENT_LIBS += -lopenal
     endif
   endif
 
   ifeq ($(USE_CURL),1)
     ifneq ($(USE_CURL_DLOPEN),1)
-      CLIENT_LDFLAGS += -lcurl
+      CLIENT_LIBS += -lcurl
     endif
   endif
 
   ifeq ($(USE_CODEC_VORBIS),1)
-    CLIENT_LDFLAGS += -lvorbisfile -lvorbis -logg
+    CLIENT_LIBS += -lvorbisfile -lvorbis -logg
   endif
 
   ifeq ($(USE_MUMBLE),1)
-    CLIENT_LDFLAGS += -lrt
+    CLIENT_LIBS += -lrt
   endif
 
 ifeq ($(USE_LOCAL_HEADERS),1)
@@ -323,7 +322,7 @@
   endif
 
   DEBUG_CFLAGS = $(BASE_CFLAGS) -g -O0
-  RELEASE_CFLAGS=$(BASE_CFLAGS) -DNDEBUG $(OPTIMIZE)
+  RELEASE_CFLAGS=$(BASE_CFLAGS) -DNDEBUG
 
 else # ifeq Linux
 
@@ -336,7 +336,7 @@
 
 ifeq ($(PLATFORM),darwin)
   HAVE_VM_COMPILED=true
-  CLIENT_LDFLAGS=
+  CLIENT_LIBS=
   OPTIMIZE=
   
   BASE_CFLAGS = -Wall -Wimplicit -Wstrict-prototypes
@@ -357,7 +357,7 @@
   ifeq ($(USE_OPENAL),1)
     BASE_CFLAGS += -DUSE_OPENAL
     ifneq ($(USE_OPENAL_DLOPEN),1)
-      CLIENT_LDFLAGS += -framework OpenAL
+      CLIENT_LIBS += -framework OpenAL
     else
       BASE_CFLAGS += -DUSE_OPENAL_DLOPEN
     endif
@@ -366,7 +366,7 @@
   ifeq ($(USE_CURL),1)
     BASE_CFLAGS += -DUSE_CURL
     ifneq ($(USE_CURL_DLOPEN),1)
-      CLIENT_LDFLAGS += -lcurl
+      CLIENT_LIBS += -lcurl
     else
       BASE_CFLAGS += -DUSE_CURL_DLOPEN
     endif
@@ -374,7 +374,7 @@
 
   ifeq ($(USE_CODEC_VORBIS),1)
     BASE_CFLAGS += -DUSE_CODEC_VORBIS
-    CLIENT_LDFLAGS += -lvorbisfile -lvorbis -logg
+    CLIENT_LIBS += -lvorbisfile -lvorbis -logg
   endif
 
   BASE_CFLAGS += -D_THREAD_SAFE=1
@@ -387,7 +387,7 @@
   #  the file has been modified by each build.
   LIBSDLMAIN=$(B)/libSDLmain.a
   LIBSDLMAINSRC=$(LIBSDIR)/macosx/libSDLmain.a
-  CLIENT_LDFLAGS += -framework Cocoa -framework IOKit -framework OpenGL \
+  CLIENT_LIBS += -framework Cocoa -framework IOKit -framework OpenGL \
     $(LIBSDIR)/macosx/libSDL-1.2.0.dylib
 
   OPTIMIZE += -ffast-math -falign-loops=16
@@ -441,7 +441,7 @@
     ifeq ($(USE_OPENAL_DLOPEN),1)
       BASE_CFLAGS += -DUSE_OPENAL_DLOPEN
     else
-      CLIENT_LDFLAGS += $(OPENAL_LDFLAGS)
+      CLIENT_LIBS += $(OPENAL_LDFLAGS)
     endif
   endif
 
@@ -461,8 +461,8 @@
 
   BINEXT=.exe
 
-  LDFLAGS= -lws2_32 -lwinmm
-  CLIENT_LDFLAGS = -mwindows -lgdi32 -lole32 -lopengl32
+  LDLIBS= -lws2_32 -lwinmm
+  CLIENT_LIBS = -mwindows -lgdi32 -lole32 -lopengl32
 
   ifeq ($(USE_CURL),1)
     BASE_CFLAGS += -DUSE_CURL
@@ -470,9 +470,9 @@
     ifneq ($(USE_CURL_DLOPEN),1)
       ifeq ($(USE_LOCAL_HEADERS),1)
         BASE_CFLAGS += -DCURL_STATICLIB
-        CLIENT_LDFLAGS += $(LIBSDIR)/win32/libcurl.a
+        CLIENT_LIBS += $(LIBSDIR)/win32/libcurl.a
       else
-        CLIENT_LDFLAGS += $(CURL_LIBS)
+        CLIENT_LIBS += $(CURL_LIBS)
       endif
     endif
   endif
@@ -480,9 +480,9 @@
   ifeq ($(USE_CODEC_VORBIS),1)
 #Sago: Here I get vorbis to compile in Windows:
     ifeq ($(PLATFORM),mingw32)
-      CLIENT_LDFLAGS += $(LIBSDIR)/win32/libvorbisfile.a $(LIBSDIR)/win32/libvorbis.a $(LIBSDIR)/win32/libogg.a
+      CLIENT_LIBS += $(LIBSDIR)/win32/libvorbisfile.a $(LIBSDIR)/win32/libvorbis.a $(LIBSDIR)/win32/libogg.a
     else
-      CLIENT_LDFLAGS += -lvorbisfile -lvorbis -logg
+      CLIENT_LIBS += -lvorbisfile -lvorbis -logg
     endif
   endif
 
@@ -496,14 +496,14 @@
   RELEASE_CFLAGS=$(BASE_CFLAGS) -DNDEBUG $(OPTIMIZE)
 
   # libmingw32 must be linked before libSDLmain
-  CLIENT_LDFLAGS += -lmingw32
+  CLIENT_LIBS += -lmingw32
   ifeq ($(USE_LOCAL_HEADERS),1)
     BASE_CFLAGS += -I$(SDLHDIR)/include
-    CLIENT_LDFLAGS += $(LIBSDIR)/win32/libSDLmain.a \
+    CLIENT_LIBS += $(LIBSDIR)/win32/libSDLmain.a \
                       $(LIBSDIR)/win32/libSDL.dll.a
   else
     BASE_CFLAGS += $(SDL_CFLAGS)
-    CLIENT_LDFLAGS += $(SDL_LIBS)
+    CLIENT_LIBS += $(SDL_LIBS)
   endif
 
 
@@ -561,22 +561,22 @@
   SHLIBCFLAGS=-fPIC
   SHLIBLDFLAGS=-shared $(LDFLAGS)
 
-  THREAD_LDFLAGS=-lpthread
+  THREAD_LIBS=-lpthread
   # don't need -ldl (FreeBSD)
-  LDFLAGS=-lm
+  LDLIBS=-lm -lz
 
-  CLIENT_LDFLAGS =
+  CLIENT_LIBS =
 
-  CLIENT_LDFLAGS += $(shell sdl-config --libs) -lGL
+  CLIENT_LIBS += $(shell sdl-config --libs) -lGL
 
   ifeq ($(USE_OPENAL),1)
     ifneq ($(USE_OPENAL_DLOPEN),1)
-      CLIENT_LDFLAGS += $(THREAD_LDFLAGS) -lopenal
+      CLIENT_LIBS += $(THREAD_LIBS) -lopenal
     endif
   endif
 
   ifeq ($(USE_CODEC_VORBIS),1)
-    CLIENT_LDFLAGS += -lvorbisfile -lvorbis -logg
+    CLIENT_LIBS += -lvorbisfile -lvorbis -logg
   endif
 
 else # ifeq freebsd
@@ -618,21 +618,21 @@
   SHLIBCFLAGS=-fPIC
   SHLIBLDFLAGS=-shared $(LDFLAGS)
 
-  THREAD_LDFLAGS=-lpthread
-  LDFLAGS=-lm
+  THREAD_LIBS=-lpthread
+  LDLIBS=-lm -lz
 
-  CLIENT_LDFLAGS =
+  CLIENT_LIBS =
 
-  CLIENT_LDFLAGS += $(shell sdl-config --libs) -lGL
+  CLIENT_LIBS += $(shell sdl-config --libs) -lGL
 
   ifeq ($(USE_OPENAL),1)
     ifneq ($(USE_OPENAL_DLOPEN),1)
-      CLIENT_LDFLAGS += $(THREAD_LDFLAGS) -lossaudio -lopenal
+      CLIENT_LIBS += $(THREAD_LIBS) -lossaudio -lopenal
     endif
   endif
 
   ifeq ($(USE_CODEC_VORBIS),1)
-    CLIENT_LDFLAGS += -lvorbisfile -lvorbis -logg
+    CLIENT_LIBS += -lvorbisfile -lvorbis -logg
   endif
 
 else # ifeq openbsd
@@ -647,11 +647,11 @@
     ARCH=i386
   endif
 
-  LDFLAGS=-lm
+  LDLIBS=-lm -lz
   SHLIBEXT=so
   SHLIBCFLAGS=-fPIC
   SHLIBLDFLAGS=-shared $(LDFLAGS)
-  THREAD_LDFLAGS=-lpthread
+  THREAD_LIBS=-lpthread
 
   BASE_CFLAGS = -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes
 
@@ -686,9 +686,9 @@
   SHLIBCFLAGS=
   SHLIBLDFLAGS=-shared
 
-  LDFLAGS=-ldl -lm -lgen
+  LDLIBS=-ldl -lm -lgen -lz
   # FIXME: The X libraries probably aren't necessary?
-  CLIENT_LDFLAGS=-L/usr/X11/$(LIB) $(shell sdl-config --libs) -lGL \
+  CLIENT_LIBS=-L/usr/X11/$(LIB) $(shell sdl-config --libs) -lGL \
-    -lX11 -lXext -lm
+    -lX11 -lXext -lm -ljpeg
 
 else # ifeq IRIX
@@ -736,7 +736,7 @@
     BASE_CFLAGS += -m32
     LDFLAGS += -m32
     BASE_CFLAGS += -I/usr/X11/include/NVIDIA
-    CLIENT_LDFLAGS += -L/usr/X11/lib/NVIDIA -R/usr/X11/lib/NVIDIA
+    CLIENT_LIBS += -L/usr/X11/lib/NVIDIA -R/usr/X11/lib/NVIDIA
   endif
   endif
 
@@ -752,12 +752,12 @@
   SHLIBCFLAGS=-fPIC
   SHLIBLDFLAGS=-shared $(LDFLAGS)
 
-  THREAD_LDFLAGS=-lpthread
-  LDFLAGS=-lsocket -lnsl -ldl -lm
+  THREAD_LIBS=-lpthread
+  LDLIBS=-lsocket -lnsl -ldl -lm -lz
 
   BOTCFLAGS=-O0
 
-  CLIENT_LDFLAGS +=$(shell sdl-config --libs) -lGL
+  CLIENT_LIBS +=$(shell sdl-config --libs) -lGL -ljpeg
 
 else # ifeq sunos
 
@@ -825,7 +825,7 @@
   ifeq ($(USE_INTERNAL_SPEEX),1)
     BASE_CFLAGS += -DFLOATING_POINT -DUSE_ALLOCA -I$(SPEEXDIR)/include
   else
-    CLIENT_LDFLAGS += -lspeex
+    CLIENT_LIBS += -lspeex -lspeexdsp
   endif
 endif
 
@@ -1421,13 +1421,13 @@
 
 $(B)/openarena.$(ARCH)$(BINEXT): $(Q3OBJ) $(Q3POBJ) $(LIBSDLMAIN)
 	$(echo_cmd) "LD $@"
-	$(Q)$(CC) -o $@ $(Q3OBJ) $(Q3POBJ) $(CLIENT_LDFLAGS) \
-		$(LDFLAGS) $(LIBSDLMAIN)
+	$(Q)$(CC) -o $@ $(Q3OBJ) $(Q3POBJ) \
+		$(LDFLAGS) $(LIBSDLMAIN) $(CLIENT_LIBS) $(LDLIBS)
 
 $(B)/openarena-smp.$(ARCH)$(BINEXT): $(Q3OBJ) $(Q3POBJ_SMP) $(LIBSDLMAIN)
 	$(echo_cmd) "LD $@"
-	$(Q)$(CC) -o $@ $(Q3OBJ) $(Q3POBJ_SMP) $(CLIENT_LDFLAGS) \
-		$(THREAD_LDFLAGS) $(LDFLAGS) $(LIBSDLMAIN)
+	$(Q)$(CC) -o $@ $(Q3OBJ) $(Q3POBJ_SMP) \
+		$(LDFLAGS) $(THREAD_LIBS) $(LIBSDLMAIN) $(CLIENT_LIBS) $(LDLIBS)
 
 ifneq ($(strip $(LIBSDLMAIN)),)
 ifneq ($(strip $(LIBSDLMAINSRC)),)
@@ -1553,7 +1553,7 @@
 
 $(B)/oa_ded.$(ARCH)$(BINEXT): $(Q3DOBJ)
 	$(echo_cmd) "LD $@"
-	$(Q)$(CC) -o $@ $(Q3DOBJ) $(LDFLAGS)
+	$(Q)$(CC) -o $@ $(Q3DOBJ) $(LDFLAGS) $(LDLIBS)
 
 
 



1.1                  games-fps/openarena/files/openarena-0.8.5-unbundling.patch

file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/games-fps/openarena/files/openarena-0.8.5-unbundling.patch?rev=1.1&view=markup
plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/games-fps/openarena/files/openarena-0.8.5-unbundling.patch?rev=1.1&content-type=text/plain

Index: openarena-0.8.5-unbundling.patch
===================================================================
--- openarena-engine-0.8.1/Makefile.old	2010-03-06 21:51:19.000000000 +0100
+++ openarena-engine-0.8.1/Makefile	2010-03-06 21:58:01.000000000 +0100
@@ -1278,41 +1278,7 @@
   $(B)/client/l_script.o \
   $(B)/client/l_struct.o \
   \
-  $(B)/client/jcapimin.o \
-  $(B)/client/jcapistd.o \
-  $(B)/client/jchuff.o   \
-  $(B)/client/jcinit.o \
-  $(B)/client/jccoefct.o  \
-  $(B)/client/jccolor.o \
-  $(B)/client/jfdctflt.o \
-  $(B)/client/jcdctmgr.o \
-  $(B)/client/jcphuff.o \
-  $(B)/client/jcmainct.o \
-  $(B)/client/jcmarker.o \
-  $(B)/client/jcmaster.o \
-  $(B)/client/jcomapi.o \
-  $(B)/client/jcparam.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/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-0.8.1/code/qcommon/unzip.h.old	2010-03-06 21:59:46.000000000 +0100
+++ openarena-engine-0.8.1/code/qcommon/unzip.h	2010-03-06 22:00:58.000000000 +0100
@@ -19,6 +19,8 @@
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 ===========================================================================
 */
+#include <zconf.h>
+#include <zlib.h>
 
 #if defined(STRICTUNZIP) || defined(STRICTZIPUNZIP)
 /* like the STRICT of WIN32, we define a pointer that cannot be converted
@@ -80,6 +82,7 @@
 typedef void* (*alloc_func) (void* opaque, unsigned int items, unsigned int size);
 typedef void   (*free_func) (void* opaque, void* address);
 
+#if 0
 struct internal_state;
 
 typedef struct z_stream_s {
@@ -105,6 +108,7 @@
 
 typedef z_stream *z_streamp;
 
+#endif
 
 /* file_in_zip_read_info_s contain internal information about a file in zipfile,
     when reading and decompress it */
--- openarena-engine-0.8.1/code/qcommon/unzip.c.old	2010-03-06 22:01:40.000000000 +0100
+++ openarena-engine-0.8.1/code/qcommon/unzip.c	2010-03-06 22:03:35.000000000 +0100
@@ -49,7 +49,7 @@
       ftp://ftp.cdrom.com/pub/infozip/doc/appnote-970311-iz.zip
    PkWare has also a specification at :
       ftp://ftp.pkware.com/probdesc.zip */
-
+#if 0
 /* zlib.h -- interface of the 'zlib' general purpose compression library
   version 1.1.3, July 9th, 1998
 
@@ -955,6 +955,7 @@
 // static const char   * zError           OF((int err));
 // static int            inflateSyncPoint OF((z_streamp z));
 // static const uLong * get_crc_table    OF((void));
+#endif
 
 typedef unsigned char  uch;
 typedef unsigned short ush;
@@ -2248,6 +2249,8 @@
 	return (int)uReadThis;
 }
 
+#if 0
+
 /* infblock.h -- header to use infblock.c
  * Copyright (C) 1995-1998 Mark Adler
  * For conditions of distribution and use, see copyright notice in zlib.h 
@@ -4295,3 +4298,4 @@
 }
 
 
+#endif
--- openarena-engine-0.8.1/code/jpeg-6/jdatasrc.c.old	2010-03-10 09:13:25.000000000 +0100
+++ openarena-engine-0.8.1/code/jpeg-6/jdatasrc.c	2010-03-10 09:23:39.000000000 +0100
@@ -16,9 +16,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))
@@ -189,7 +195,7 @@
  */
 
 GLOBAL void
-jpeg_mem_src (j_decompress_ptr cinfo, unsigned char *inbuf, size_t size)
+jpeg_mem_src (j_decompress_ptr cinfo, unsigned char *inbuf, unsigned long size)
 {
   my_src_ptr src;
 
--- openarena-engine-0.8.1/code/renderer/tr_image_jpg.c.old	2010-03-10 09:30:30.000000000 +0100
+++ openarena-engine-0.8.1/code/renderer/tr_image_jpg.c	2010-03-10 10:17:42.000000000 +0100
@@ -31,7 +31,7 @@
  */
 
 #define JPEG_INTERNALS
-#include "../jpeg-6/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
@@ -128,7 +128,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);
 
@@ -141,14 +144,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;
@@ -173,7 +188,7 @@
 		buf[--dindex] = greyshade;
 	} while(sindex);
   }
-  else
+  else if (4 == cinfo.output_components)
   {
 	// clear all the alphas to 255
 	int	i;






^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2010-09-09  7:14 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-09-09  7:14 [gentoo-commits] gentoo-x86 commit in games-fps/openarena/files: openarena-0.8.5-bots-strcpy-fix.patch openarena-0.8.5-makefile.patch openarena-0.8.5-unbundling.patch Michael Sterrett (mr_bones_)

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox