Package init
This commit is contained in:
commit
b8f4de38dc
56
CVE-2019-7573_CVE-2019-7576.patch
Normal file
56
CVE-2019-7573_CVE-2019-7576.patch
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
--- a/src/audio/SDL_wave.c 2012-01-19 14:30:06.000000000 +0800
|
||||||
|
+++ b/src/audio/SDL_wave.c 2019-04-22 12:07:56.181000000 +0800
|
||||||
|
@@ -44,12 +44,13 @@ static struct MS_ADPCM_decoder {
|
||||||
|
struct MS_ADPCM_decodestate state[2];
|
||||||
|
} MS_ADPCM_state;
|
||||||
|
|
||||||
|
-static int InitMS_ADPCM(WaveFMT *format)
|
||||||
|
+static int InitMS_ADPCM(WaveFMT *format, int length)
|
||||||
|
{
|
||||||
|
- Uint8 *rogue_feel;
|
||||||
|
+ Uint8 *rogue_feel, *rogue_feel_end;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
/* Set the rogue pointer to the MS_ADPCM specific data */
|
||||||
|
+ if (length < sizeof(*format)) goto too_short;
|
||||||
|
MS_ADPCM_state.wavefmt.encoding = SDL_SwapLE16(format->encoding);
|
||||||
|
MS_ADPCM_state.wavefmt.channels = SDL_SwapLE16(format->channels);
|
||||||
|
MS_ADPCM_state.wavefmt.frequency = SDL_SwapLE32(format->frequency);
|
||||||
|
@@ -58,9 +59,11 @@ static int InitMS_ADPCM(WaveFMT *format)
|
||||||
|
MS_ADPCM_state.wavefmt.bitspersample =
|
||||||
|
SDL_SwapLE16(format->bitspersample);
|
||||||
|
rogue_feel = (Uint8 *)format+sizeof(*format);
|
||||||
|
+ rogue_feel_end = (Uint8 *)format + length;
|
||||||
|
if ( sizeof(*format) == 16 ) {
|
||||||
|
rogue_feel += sizeof(Uint16);
|
||||||
|
}
|
||||||
|
+ if (rogue_feel + 4 > rogue_feel_end) goto too_short;
|
||||||
|
MS_ADPCM_state.wSamplesPerBlock = ((rogue_feel[1]<<8)|rogue_feel[0]);
|
||||||
|
rogue_feel += sizeof(Uint16);
|
||||||
|
MS_ADPCM_state.wNumCoef = ((rogue_feel[1]<<8)|rogue_feel[0]);
|
||||||
|
@@ -70,12 +73,16 @@ static int InitMS_ADPCM(WaveFMT *format)
|
||||||
|
return(-1);
|
||||||
|
}
|
||||||
|
for ( i=0; i<MS_ADPCM_state.wNumCoef; ++i ) {
|
||||||
|
+ if (rogue_feel + 4 > rogue_feel_end) goto too_short;
|
||||||
|
MS_ADPCM_state.aCoeff[i][0] = ((rogue_feel[1]<<8)|rogue_feel[0]);
|
||||||
|
rogue_feel += sizeof(Uint16);
|
||||||
|
MS_ADPCM_state.aCoeff[i][1] = ((rogue_feel[1]<<8)|rogue_feel[0]);
|
||||||
|
rogue_feel += sizeof(Uint16);
|
||||||
|
}
|
||||||
|
return(0);
|
||||||
|
+too_short:
|
||||||
|
+ SDL_SetError("Unexpected length of a chunk with a MS ADPCM format");
|
||||||
|
+ return(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
static Sint32 MS_ADPCM_nibble(struct MS_ADPCM_decodestate *state,
|
||||||
|
@@ -461,7 +468,7 @@ SDL_AudioSpec * SDL_LoadWAV_RW (SDL_RWops *src, int freesrc,
|
||||||
|
break;
|
||||||
|
case MS_ADPCM_CODE:
|
||||||
|
/* Try to understand this */
|
||||||
|
- if ( InitMS_ADPCM(format) < 0 ) {
|
||||||
|
+ if ( InitMS_ADPCM(format, lenread) < 0 ) {
|
||||||
|
was_error = 1;
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
70
CVE-2019-7577.patch
Normal file
70
CVE-2019-7577.patch
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
--- a/src/audio/SDL_wave.c 2012-01-19 14:30:06.000000000 +0800
|
||||||
|
+++ b/src/audio/SDL_wave.c 2019-04-22 15:40:50.023000000 +0800
|
||||||
|
@@ -115,7 +115,7 @@ static Sint32 MS_ADPCM_nibble(struct MS_ADPCM_decodestate *state,
|
||||||
|
static int MS_ADPCM_decode(Uint8 **audio_buf, Uint32 *audio_len)
|
||||||
|
{
|
||||||
|
struct MS_ADPCM_decodestate *state[2];
|
||||||
|
- Uint8 *freeable, *encoded, *decoded;
|
||||||
|
+ Uint8 *freeable, *encoded, *encoded_end, *decoded;
|
||||||
|
Sint32 encoded_len, samplesleft;
|
||||||
|
Sint8 nybble, stereo;
|
||||||
|
Sint16 *coeff[2];
|
||||||
|
@@ -124,6 +124,7 @@ static int MS_ADPCM_decode(Uint8 **audio_buf, Uint32 *audio_len)
|
||||||
|
/* Allocate the proper sized output buffer */
|
||||||
|
encoded_len = *audio_len;
|
||||||
|
encoded = *audio_buf;
|
||||||
|
+ encoded_end = encoded + encoded_len;
|
||||||
|
freeable = *audio_buf;
|
||||||
|
*audio_len = (encoded_len/MS_ADPCM_state.wavefmt.blockalign) *
|
||||||
|
MS_ADPCM_state.wSamplesPerBlock*
|
||||||
|
@@ -141,6 +142,7 @@ static int MS_ADPCM_decode(Uint8 **audio_buf, Uint32 *audio_len)
|
||||||
|
state[1] = &MS_ADPCM_state.state[stereo];
|
||||||
|
while ( encoded_len >= MS_ADPCM_state.wavefmt.blockalign ) {
|
||||||
|
/* Grab the initial information for this block */
|
||||||
|
+ if (encoded + 7 + (stereo ? 7 : 0) > encoded_end) goto too_short;
|
||||||
|
state[0]->hPredictor = *encoded++;
|
||||||
|
if ( stereo ) {
|
||||||
|
state[1]->hPredictor = *encoded++;
|
||||||
|
@@ -188,6 +190,8 @@ static int MS_ADPCM_decode(Uint8 **audio_buf, Uint32 *audio_len)
|
||||||
|
samplesleft = (MS_ADPCM_state.wSamplesPerBlock-2)*
|
||||||
|
MS_ADPCM_state.wavefmt.channels;
|
||||||
|
while ( samplesleft > 0 ) {
|
||||||
|
+ if (encoded + 1 > encoded_end) goto too_short;
|
||||||
|
+
|
||||||
|
nybble = (*encoded)>>4;
|
||||||
|
new_sample = MS_ADPCM_nibble(state[0],nybble,coeff[0]);
|
||||||
|
decoded[0] = new_sample&0xFF;
|
||||||
|
@@ -209,6 +213,10 @@ static int MS_ADPCM_decode(Uint8 **audio_buf, Uint32 *audio_len)
|
||||||
|
}
|
||||||
|
SDL_free(freeable);
|
||||||
|
return(0);
|
||||||
|
+too_short:
|
||||||
|
+ SDL_SetError("Too short chunk for a MS ADPCM decoder");
|
||||||
|
+ SDL_free(freeable);
|
||||||
|
+ return(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
struct IMA_ADPCM_decodestate {
|
||||||
|
--- a/src/audio/SDL_wave.c 2019-04-22 04:32:30.989000000 -0400
|
||||||
|
+++ b/src/audio/SDL_wave.c 2019-04-22 05:26:47.003000000 -0400
|
||||||
|
@@ -154,6 +154,9 @@ static int MS_ADPCM_decode(Uint8 **audio
|
||||||
|
if ( stereo ) {
|
||||||
|
state[1]->hPredictor = *encoded++;
|
||||||
|
}
|
||||||
|
+ if (state[0]->hPredictor >= 7 || state[1]->hPredictor >= 7) {
|
||||||
|
+ goto invalid_predictor;
|
||||||
|
+ }
|
||||||
|
state[0]->iDelta = ((encoded[1]<<8)|encoded[0]);
|
||||||
|
encoded += sizeof(Sint16);
|
||||||
|
if ( stereo ) {
|
||||||
|
@@ -224,6 +227,10 @@ too_short:
|
||||||
|
SDL_SetError("Too short chunk for a MS ADPCM decoder");
|
||||||
|
SDL_free(freeable);
|
||||||
|
return(-1);
|
||||||
|
+invalid_predictor:
|
||||||
|
+ SDL_SetError("Invalid predictor value for a MS ADPCM decoder");
|
||||||
|
+ SDL_free(freeable);
|
||||||
|
+ return(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
struct IMA_ADPCM_decodestate {
|
||||||
43
CVE-2019-7578.patch
Normal file
43
CVE-2019-7578.patch
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
--- a/src/audio/SDL_wave.c 2019-04-22 05:35:16.821000000 -0400
|
||||||
|
+++ b/src/audio/SDL_wave.c 2019-04-22 05:42:21.381000000 -0400
|
||||||
|
@@ -232,11 +232,12 @@ static struct IMA_ADPCM_decoder {
|
||||||
|
struct IMA_ADPCM_decodestate state[2];
|
||||||
|
} IMA_ADPCM_state;
|
||||||
|
|
||||||
|
-static int InitIMA_ADPCM(WaveFMT *format)
|
||||||
|
+static int InitIMA_ADPCM(WaveFMT *format, int length)
|
||||||
|
{
|
||||||
|
- Uint8 *rogue_feel;
|
||||||
|
+ Uint8 *rogue_feel, *rogue_feel_end;
|
||||||
|
|
||||||
|
/* Set the rogue pointer to the IMA_ADPCM specific data */
|
||||||
|
+ if (length < sizeof(*format)) goto too_short;
|
||||||
|
IMA_ADPCM_state.wavefmt.encoding = SDL_SwapLE16(format->encoding);
|
||||||
|
IMA_ADPCM_state.wavefmt.channels = SDL_SwapLE16(format->channels);
|
||||||
|
IMA_ADPCM_state.wavefmt.frequency = SDL_SwapLE32(format->frequency);
|
||||||
|
@@ -245,11 +246,16 @@ static int InitIMA_ADPCM(WaveFMT *format
|
||||||
|
IMA_ADPCM_state.wavefmt.bitspersample =
|
||||||
|
SDL_SwapLE16(format->bitspersample);
|
||||||
|
rogue_feel = (Uint8 *)format+sizeof(*format);
|
||||||
|
+ rogue_feel_end = (Uint8 *)format + length;
|
||||||
|
if ( sizeof(*format) == 16 ) {
|
||||||
|
rogue_feel += sizeof(Uint16);
|
||||||
|
}
|
||||||
|
+ if (rogue_feel + 2 > rogue_feel_end) goto too_short;
|
||||||
|
IMA_ADPCM_state.wSamplesPerBlock = ((rogue_feel[1]<<8)|rogue_feel[0]);
|
||||||
|
return(0);
|
||||||
|
+too_short:
|
||||||
|
+ SDL_SetError("Unexpected length of a chunk with an IMA ADPCM format");
|
||||||
|
+ return(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
static Sint32 IMA_ADPCM_nibble(struct IMA_ADPCM_decodestate *state,Uint8 nybble)
|
||||||
|
@@ -479,7 +485,7 @@ SDL_AudioSpec * SDL_LoadWAV_RW (SDL_RWop
|
||||||
|
break;
|
||||||
|
case IMA_ADPCM_CODE:
|
||||||
|
/* Try to understand this */
|
||||||
|
- if ( InitIMA_ADPCM(format) < 0 ) {
|
||||||
|
+ if ( InitIMA_ADPCM(format, lenread) < 0 ) {
|
||||||
|
was_error = 1;
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
32
CVE-2019-7635_1.patch
Normal file
32
CVE-2019-7635_1.patch
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
--- a/src/video/SDL_bmp.c 2012-01-19 14:30:06.000000000 +0800
|
||||||
|
+++ b/src/video/SDL_bmp.c 2019-04-22 11:29:33.990000000 +0800
|
||||||
|
@@ -296,6 +296,12 @@ SDL_Surface * SDL_LoadBMP_RW (SDL_RWops
|
||||||
|
}
|
||||||
|
*(bits+i) = (pixel>>shift);
|
||||||
|
pixel <<= ExpandBMP;
|
||||||
|
+ if ( bits[i] >= biClrUsed ) {
|
||||||
|
+ SDL_SetError(
|
||||||
|
+ "A BMP image contains a pixel with a color out of the palette");
|
||||||
|
+ was_error = SDL_TRUE;
|
||||||
|
+ goto done;
|
||||||
|
+ }
|
||||||
|
} }
|
||||||
|
break;
|
||||||
|
|
||||||
|
@@ -306,6 +312,16 @@ SDL_Surface * SDL_LoadBMP_RW (SDL_RWops
|
||||||
|
was_error = SDL_TRUE;
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
+ if ( 8 == biBitCount && palette && biClrUsed < (1 << biBitCount ) ) {
|
||||||
|
+ for ( i=0; i<surface->w; ++i ) {
|
||||||
|
+ if ( bits[i] >= biClrUsed ) {
|
||||||
|
+ SDL_SetError(
|
||||||
|
+ "A BMP image contains a pixel with a color out of the palette");
|
||||||
|
+ was_error = SDL_TRUE;
|
||||||
|
+ goto done;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
#if SDL_BYTEORDER == SDL_BIG_ENDIAN
|
||||||
|
/* Byte-swap the pixels if needed. Note that the 24bpp
|
||||||
|
case has already been taken care of above. */
|
||||||
17
CVE-2019-7635_2.patch
Normal file
17
CVE-2019-7635_2.patch
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
--- a/src/video/SDL_bmp.c 2012-01-19 14:30:06.000000000 +0800
|
||||||
|
+++ b/src/video/SDL_bmp.c 2019-04-22 11:34:08.793000000 +0800
|
||||||
|
@@ -163,6 +163,14 @@ SDL_Surface * SDL_LoadBMP_RW (SDL_RWops
|
||||||
|
ExpandBMP = biBitCount;
|
||||||
|
biBitCount = 8;
|
||||||
|
break;
|
||||||
|
+ case 2:
|
||||||
|
+ case 3:
|
||||||
|
+ case 5:
|
||||||
|
+ case 6:
|
||||||
|
+ case 7:
|
||||||
|
+ SDL_SetError("%d-bpp BMP images are not supported", biBitCount);
|
||||||
|
+ was_error = SDL_TRUE;
|
||||||
|
+ goto done;
|
||||||
|
default:
|
||||||
|
ExpandBMP = 0;
|
||||||
|
break;
|
||||||
13
CVE-2019-7636.patch
Normal file
13
CVE-2019-7636.patch
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
--- a/src/video/SDL_bmp.c Sun Jan 13 15:27:50 2019 +0100
|
||||||
|
+++ b/src/video/SDL_bmp.c Mon Feb 18 07:48:23 2019 -0800
|
||||||
|
@@ -233,6 +233,10 @@
|
||||||
|
if ( palette ) {
|
||||||
|
if ( biClrUsed == 0 ) {
|
||||||
|
biClrUsed = 1 << biBitCount;
|
||||||
|
+ } else if ( biClrUsed > (1 << biBitCount) ) {
|
||||||
|
+ SDL_SetError("BMP file has an invalid number of colors");
|
||||||
|
+ was_error = SDL_TRUE;
|
||||||
|
+ goto done;
|
||||||
|
}
|
||||||
|
if ( biSize == 12 ) {
|
||||||
|
for ( i = 0; i < (int)biClrUsed; ++i ) {
|
||||||
149
CVE-2019-7637.patch
Normal file
149
CVE-2019-7637.patch
Normal file
@ -0,0 +1,149 @@
|
|||||||
|
--- a/src/video/SDL_pixels.c Sat Mar 16 18:35:33 2019 -0700
|
||||||
|
+++ b/src/video/SDL_pixels.c Sat Mar 16 19:16:24 2019 -0700
|
||||||
|
@@ -286,26 +286,53 @@
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
- * Calculate the pad-aligned scanline width of a surface
|
||||||
|
+ * Calculate the pad-aligned scanline width of a surface. Return 0 in case of
|
||||||
|
+ * an error.
|
||||||
|
*/
|
||||||
|
Uint16 SDL_CalculatePitch(SDL_Surface *surface)
|
||||||
|
{
|
||||||
|
- Uint16 pitch;
|
||||||
|
+ unsigned int pitch = 0;
|
||||||
|
|
||||||
|
/* Surface should be 4-byte aligned for speed */
|
||||||
|
- pitch = surface->w*surface->format->BytesPerPixel;
|
||||||
|
+ /* The code tries to prevent from an Uint16 overflow. */;
|
||||||
|
+ for (Uint8 byte = surface->format->BytesPerPixel; byte; byte--) {
|
||||||
|
+ pitch += (unsigned int)surface->w;
|
||||||
|
+ if (pitch < surface->w) {
|
||||||
|
+ SDL_SetError("A scanline is too wide");
|
||||||
|
+ return(0);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
switch (surface->format->BitsPerPixel) {
|
||||||
|
case 1:
|
||||||
|
- pitch = (pitch+7)/8;
|
||||||
|
+ if (pitch % 8) {
|
||||||
|
+ pitch = pitch / 8 + 1;
|
||||||
|
+ } else {
|
||||||
|
+ pitch = pitch / 8;
|
||||||
|
+ }
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
- pitch = (pitch+1)/2;
|
||||||
|
+ if (pitch % 2) {
|
||||||
|
+ pitch = pitch / 2 + 1;
|
||||||
|
+ } else {
|
||||||
|
+ pitch = pitch / 2;
|
||||||
|
+ }
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
- pitch = (pitch + 3) & ~3; /* 4-byte aligning */
|
||||||
|
- return(pitch);
|
||||||
|
+ /* 4-byte aligning */
|
||||||
|
+ if (pitch & 3) {
|
||||||
|
+ if (pitch + 3 < pitch) {
|
||||||
|
+ SDL_SetError("A scanline is too wide");
|
||||||
|
+ return(0);
|
||||||
|
+ }
|
||||||
|
+ pitch = (pitch + 3) & ~3;
|
||||||
|
+ }
|
||||||
|
+ if (pitch > 0xFFFF) {
|
||||||
|
+ SDL_SetError("A scanline is too wide");
|
||||||
|
+ return(0);
|
||||||
|
+ }
|
||||||
|
+ return((Uint16)pitch);
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
* Match an RGB value to a particular palette index
|
||||||
|
--- a/src/video/gapi/SDL_gapivideo.c Sat Mar 16 18:35:33 2019 -0700
|
||||||
|
+++ b/src/video/gapi/SDL_gapivideo.c Sat Mar 16 19:16:24 2019 -0700
|
||||||
|
@@ -733,6 +733,9 @@
|
||||||
|
video->w = gapi->w = width;
|
||||||
|
video->h = gapi->h = height;
|
||||||
|
video->pitch = SDL_CalculatePitch(video);
|
||||||
|
+ if (!current->pitch) {
|
||||||
|
+ return(NULL);
|
||||||
|
+ }
|
||||||
|
|
||||||
|
/* Small fix for WinCE/Win32 - when activating window
|
||||||
|
SDL_VideoSurface is equal to zero, so activating code
|
||||||
|
--- a/src/video/nanox/SDL_nxvideo.c Sat Mar 16 18:35:33 2019 -0700
|
||||||
|
+++ b/src/video/nanox/SDL_nxvideo.c Sat Mar 16 19:16:24 2019 -0700
|
||||||
|
@@ -378,6 +378,10 @@
|
||||||
|
current -> w = width ;
|
||||||
|
current -> h = height ;
|
||||||
|
current -> pitch = SDL_CalculatePitch (current) ;
|
||||||
|
+ if (!current->pitch) {
|
||||||
|
+ current = NULL;
|
||||||
|
+ goto done;
|
||||||
|
+ }
|
||||||
|
NX_ResizeImage (this, current, flags) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
--- a/src/video/ps2gs/SDL_gsvideo.c Sat Mar 16 18:35:33 2019 -0700
|
||||||
|
+++ b/src/video/ps2gs/SDL_gsvideo.c Sat Mar 16 19:16:24 2019 -0700
|
||||||
|
@@ -479,6 +479,9 @@
|
||||||
|
current->w = width;
|
||||||
|
current->h = height;
|
||||||
|
current->pitch = SDL_CalculatePitch(current);
|
||||||
|
+ if (!current->pitch) {
|
||||||
|
+ return(NULL);
|
||||||
|
+ }
|
||||||
|
|
||||||
|
/* Memory map the DMA area for block memory transfer */
|
||||||
|
if ( ! mapped_mem ) {
|
||||||
|
--- a/src/video/ps3/SDL_ps3video.c Sat Mar 16 18:35:33 2019 -0700
|
||||||
|
+++ b/src/video/ps3/SDL_ps3video.c Sat Mar 16 19:16:24 2019 -0700
|
||||||
|
@@ -339,6 +339,9 @@
|
||||||
|
current->w = width;
|
||||||
|
current->h = height;
|
||||||
|
current->pitch = SDL_CalculatePitch(current);
|
||||||
|
+ if (!current->pitch) {
|
||||||
|
+ return(NULL);
|
||||||
|
+ }
|
||||||
|
|
||||||
|
/* Alloc aligned mem for current->pixels */
|
||||||
|
s_pixels = memalign(16, current->h * current->pitch);
|
||||||
|
--- a/src/video/windib/SDL_dibvideo.c Sat Mar 16 18:35:33 2019 -0700
|
||||||
|
+++ b/src/video/windib/SDL_dibvideo.c Sat Mar 16 19:16:24 2019 -0700
|
||||||
|
@@ -675,6 +675,9 @@
|
||||||
|
video->w = width;
|
||||||
|
video->h = height;
|
||||||
|
video->pitch = SDL_CalculatePitch(video);
|
||||||
|
+ if (!current->pitch) {
|
||||||
|
+ return(NULL);
|
||||||
|
+ }
|
||||||
|
|
||||||
|
/* Small fix for WinCE/Win32 - when activating window
|
||||||
|
SDL_VideoSurface is equal to zero, so activating code
|
||||||
|
--- a/src/video/windx5/SDL_dx5video.c Sat Mar 16 18:35:33 2019 -0700
|
||||||
|
+++ b/src/video/windx5/SDL_dx5video.c Sat Mar 16 19:16:24 2019 -0700
|
||||||
|
@@ -1127,6 +1127,9 @@
|
||||||
|
video->w = width;
|
||||||
|
video->h = height;
|
||||||
|
video->pitch = SDL_CalculatePitch(video);
|
||||||
|
+ if (!current->pitch) {
|
||||||
|
+ return(NULL);
|
||||||
|
+ }
|
||||||
|
|
||||||
|
#ifndef NO_CHANGEDISPLAYSETTINGS
|
||||||
|
/* Set fullscreen mode if appropriate.
|
||||||
|
--- a/src/video/x11/SDL_x11video.c Sat Mar 16 18:35:33 2019 -0700
|
||||||
|
+++ b/src/video/x11/SDL_x11video.c Sat Mar 16 19:16:24 2019 -0700
|
||||||
|
@@ -1225,6 +1225,10 @@
|
||||||
|
current->w = width;
|
||||||
|
current->h = height;
|
||||||
|
current->pitch = SDL_CalculatePitch(current);
|
||||||
|
+ if (!current->pitch) {
|
||||||
|
+ current = NULL;
|
||||||
|
+ goto done;
|
||||||
|
+ }
|
||||||
|
if (X11_ResizeImage(this, current, flags) < 0) {
|
||||||
|
current = NULL;
|
||||||
|
goto done;
|
||||||
22
SDL-1.2.10-GrabNotViewable.patch
Normal file
22
SDL-1.2.10-GrabNotViewable.patch
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
Makes SDL-1.2 SDL_WM_GrabInput() non-blocking in case of SDL window is not
|
||||||
|
viewable. Patch provided by <pbonzini@redhat.com>.
|
||||||
|
See <http://bugzilla.libsdl.org/show_bug.cgi?id=1155>.
|
||||||
|
|
||||||
|
--- ./src/video/x11/SDL_x11wm.c 2007-12-31 04:48:13.000000000 +0000
|
||||||
|
+++ ./src/video/x11/SDL_x11wm.c 2009-01-15 10:27:14.000000000 +0000
|
||||||
|
@@ -351,13 +351,14 @@ SDL_GrabMode X11_GrabInputNoLock(_THIS,
|
||||||
|
result = XGrabPointer(SDL_Display, SDL_Window, True, 0,
|
||||||
|
GrabModeAsync, GrabModeAsync,
|
||||||
|
SDL_Window, None, CurrentTime);
|
||||||
|
- if ( result == GrabSuccess ) {
|
||||||
|
+ if ( result == GrabSuccess || result == GrabNotViewable ) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
SDL_Delay(100);
|
||||||
|
}
|
||||||
|
if ( result != GrabSuccess ) {
|
||||||
|
/* Uh, oh, what do we do here? */ ;
|
||||||
|
+ return(SDL_GRAB_OFF);
|
||||||
|
}
|
||||||
|
/* Now grab the keyboard */
|
||||||
|
XGrabKeyboard(SDL_Display, WMwindow, True,
|
||||||
25
SDL-1.2.12-multilib.patch
Normal file
25
SDL-1.2.12-multilib.patch
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
diff -up SDL-1.2.12/sdl-config.in.multilib SDL-1.2.12/sdl-config.in
|
||||||
|
--- SDL-1.2.12/sdl-config.in.multilib 2007-07-20 07:52:45.000000000 +0200
|
||||||
|
+++ SDL-1.2.12/sdl-config.in 2007-11-06 17:07:25.000000000 +0100
|
||||||
|
@@ -3,7 +3,6 @@
|
||||||
|
prefix=@prefix@
|
||||||
|
exec_prefix=@exec_prefix@
|
||||||
|
exec_prefix_set=no
|
||||||
|
-libdir=@libdir@
|
||||||
|
|
||||||
|
@ENABLE_STATIC_FALSE@usage="\
|
||||||
|
@ENABLE_STATIC_FALSE@Usage: sdl-config [--prefix[=DIR]] [--exec-prefix[=DIR]] [--version] [--cflags] [--libs]"
|
||||||
|
@@ -45,11 +44,11 @@ while test $# -gt 0; do
|
||||||
|
echo -I@includedir@/SDL @SDL_CFLAGS@
|
||||||
|
;;
|
||||||
|
@ENABLE_SHARED_TRUE@ --libs)
|
||||||
|
-@ENABLE_SHARED_TRUE@ echo -L@libdir@ @SDL_RLD_FLAGS@ @SDL_LIBS@
|
||||||
|
+@ENABLE_SHARED_TRUE@ echo @SDL_RLD_FLAGS@ @SDL_LIBS@
|
||||||
|
@ENABLE_SHARED_TRUE@ ;;
|
||||||
|
@ENABLE_STATIC_TRUE@@ENABLE_SHARED_TRUE@ --static-libs)
|
||||||
|
@ENABLE_STATIC_TRUE@@ENABLE_SHARED_FALSE@ --libs|--static-libs)
|
||||||
|
-@ENABLE_STATIC_TRUE@ echo -L@libdir@ @SDL_RLD_FLAGS@ @SDL_STATIC_LIBS@
|
||||||
|
+@ENABLE_STATIC_TRUE@ echo @SDL_RLD_FLAGS@ @SDL_STATIC_LIBS@
|
||||||
|
@ENABLE_STATIC_TRUE@ ;;
|
||||||
|
*)
|
||||||
|
echo "${usage}" 1>&2
|
||||||
73
SDL-1.2.15-SDL_EnableUNICODE_drops_keyboard_events.patch
Normal file
73
SDL-1.2.15-SDL_EnableUNICODE_drops_keyboard_events.patch
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
# HG changeset patch
|
||||||
|
# User Sam Lantinga <slouken@libsdl.org>
|
||||||
|
# Date 1397799374 25200
|
||||||
|
# Thu Apr 17 22:36:14 2014 -0700
|
||||||
|
# Branch SDL-1.2
|
||||||
|
# Node ID 0aade9c0203f717fe4b823a176c3c040f1a709f8
|
||||||
|
# Parent 22a7f096bb9d4d596f35a93e33608825693462b0
|
||||||
|
Fixed bug 2325 - SDL_EnableUNICODE sometimes drops keyboard events completely
|
||||||
|
|
||||||
|
Rafał Mużyło
|
||||||
|
|
||||||
|
The most annoying part of this bug is that though I've found it in two separate apps, I don't have a trivial testcase for it.
|
||||||
|
|
||||||
|
The problem seems to be a condition race, as it's triggered quite randomly (therefore it will be hard to tell whether it really gets fixed, if a probable fix is found).
|
||||||
|
|
||||||
|
While it's specific to SDL 1.2, it seems quite similar to the problem described and fixed in http://forums.libsdl.org/viewtopic.php?p=40503.
|
||||||
|
|
||||||
|
Now, I should start describing the problem.
|
||||||
|
|
||||||
|
A game uses Escape to open menu (the exact key might not be important). Upon opening, it calls SDL_EnableUNICODE(1). Upon closing it calls SDL_EnableUNICODE(0).
|
||||||
|
|
||||||
|
I have an IME running.
|
||||||
|
|
||||||
|
Game uses SDL_PollEvent to get the events.
|
||||||
|
|
||||||
|
If Escape is pressed repeatedly, menu is opened and closed, till it eventually freezes in open state.
|
||||||
|
"freezes" in this context means "app itself still runs, but no keyboard events are getting delivered (though - for example - mouse events still are)". "getting delivered" should mean "SDL_PollEvent is not receiving any".
|
||||||
|
If it matters, the last delivered keyboard event is a keypress, the release never arrives.
|
||||||
|
|
||||||
|
It seems (no guarantees, due to random nature of the freeze) that unsetting XMODIFIERS (which - AFAIU - will disable IME as far as SDL is concerned) prevents the freeze, therefore the reference to that SDL2 thread.
|
||||||
|
|
||||||
|
diff -r 22a7f096bb9d -r 0aade9c0203f src/video/x11/SDL_x11events.c
|
||||||
|
--- a/src/video/x11/SDL_x11events.c Sun Dec 01 00:00:17 2013 -0500
|
||||||
|
+++ b/src/video/x11/SDL_x11events.c Thu Apr 17 22:36:14 2014 -0700
|
||||||
|
@@ -395,6 +395,8 @@
|
||||||
|
{
|
||||||
|
int posted;
|
||||||
|
XEvent xevent;
|
||||||
|
+ int orig_event_type;
|
||||||
|
+ KeyCode orig_keycode;
|
||||||
|
|
||||||
|
SDL_memset(&xevent, '\0', sizeof (XEvent)); /* valgrind fix. --ryan. */
|
||||||
|
XNextEvent(SDL_Display, &xevent);
|
||||||
|
@@ -410,9 +412,29 @@
|
||||||
|
#ifdef X_HAVE_UTF8_STRING
|
||||||
|
/* If we are translating with IM, we need to pass all events
|
||||||
|
to XFilterEvent, and discard those filtered events immediately. */
|
||||||
|
+ orig_event_type = xevent.type;
|
||||||
|
+ if (orig_event_type == KeyPress || orig_event_type == KeyRelease) {
|
||||||
|
+ orig_keycode = xevent.xkey.keycode;
|
||||||
|
+ } else {
|
||||||
|
+ orig_keycode = 0;
|
||||||
|
+ }
|
||||||
|
if ( SDL_TranslateUNICODE
|
||||||
|
&& SDL_IM != NULL
|
||||||
|
&& XFilterEvent(&xevent, None) ) {
|
||||||
|
+ if (orig_keycode) {
|
||||||
|
+ SDL_keysym keysym;
|
||||||
|
+ static XComposeStatus state;
|
||||||
|
+ char keybuf[32];
|
||||||
|
+
|
||||||
|
+ keysym.scancode = xevent.xkey.keycode;
|
||||||
|
+ keysym.sym = X11_TranslateKeycode(SDL_Display, xevent.xkey.keycode);
|
||||||
|
+ keysym.mod = KMOD_NONE;
|
||||||
|
+ keysym.unicode = 0;
|
||||||
|
+ if (orig_event_type == KeyPress && XLookupString(&xevent.xkey, keybuf, sizeof(keybuf), NULL, &state))
|
||||||
|
+ keysym.unicode = (Uint8)keybuf[0];
|
||||||
|
+
|
||||||
|
+ SDL_PrivateKeyboard(orig_event_type == KeyPress ? SDL_PRESSED : SDL_RELEASED, &keysym);
|
||||||
|
+ }
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
90
SDL-1.2.15-add_sdl_config_man.patch
Normal file
90
SDL-1.2.15-add_sdl_config_man.patch
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
diff -r 91ad7b43317a Makefile.in
|
||||||
|
--- a/Makefile.in Sun Jun 02 20:48:53 2013 +0600
|
||||||
|
+++ b/Makefile.in Wed Jun 19 10:34:27 2013 +0200
|
||||||
|
@@ -98,6 +98,11 @@
|
||||||
|
$(SHELL) $(auxdir)/mkinstalldirs $(DESTDIR)$(libdir)/pkgconfig
|
||||||
|
$(INSTALL) -m 644 sdl.pc $(DESTDIR)$(libdir)/pkgconfig
|
||||||
|
install-man:
|
||||||
|
+ $(SHELL) $(auxdir)/mkinstalldirs $(DESTDIR)$(mandir)/man1
|
||||||
|
+ for src in $(srcdir)/docs/man1/*.1; do \
|
||||||
|
+ file=`echo $$src | sed -e 's|^.*/||'`; \
|
||||||
|
+ $(INSTALL) -m 644 $$src $(DESTDIR)$(mandir)/man1/$$file; \
|
||||||
|
+ done
|
||||||
|
$(SHELL) $(auxdir)/mkinstalldirs $(DESTDIR)$(mandir)/man3
|
||||||
|
for src in $(srcdir)/docs/man3/*.3; do \
|
||||||
|
file=`echo $$src | sed -e 's|^.*/||'`; \
|
||||||
|
@@ -120,6 +125,10 @@
|
||||||
|
rm -f $(DESTDIR)$(datadir)/aclocal/sdl.m4
|
||||||
|
rm -f $(DESTDIR)$(libdir)/pkgconfig/sdl.pc
|
||||||
|
uninstall-man:
|
||||||
|
+ for src in $(srcdir)/docs/man1/*.1; do \
|
||||||
|
+ file=`echo $$src | sed -e 's|^.*/||'`; \
|
||||||
|
+ rm -f $(DESTDIR)$(mandir)/man1/$$file; \
|
||||||
|
+ done
|
||||||
|
for src in $(srcdir)/docs/man3/*.3; do \
|
||||||
|
file=`echo $$src | sed -e 's|^.*/||'`; \
|
||||||
|
rm -f $(DESTDIR)$(mandir)/man3/$$file; \
|
||||||
|
diff -r 91ad7b43317a docs/man1/sdl-config.1
|
||||||
|
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
|
||||||
|
+++ b/docs/man1/sdl-config.1 Wed Jun 19 10:34:27 2013 +0200
|
||||||
|
@@ -0,0 +1,60 @@
|
||||||
|
+.TH sdl-config 1 "2013-06-19" "SDL 1.2"
|
||||||
|
+.SH NAME
|
||||||
|
+sdl-config \- script to get information about the installed version of SDL
|
||||||
|
+.SH SYNOPSIS
|
||||||
|
+\fBsdl-config
|
||||||
|
+[\~--prefix[=\fIDIR\fP]\~]
|
||||||
|
+[\~--exec-prefix[=\fIDIR\fP]\~]
|
||||||
|
+[\~--version\~] [\~--cflags\~] [\~--libs\~] [\~--static-libs\~]\fR
|
||||||
|
+.SH DESCRIPTION
|
||||||
|
+.B sdl-config
|
||||||
|
+is a tool that is used to configure and determine the compiler and linker
|
||||||
|
+flags that should be used to compile and link programs, and libraries, and
|
||||||
|
+plugins that use SDL. It is also used internally by the m4 macros that are
|
||||||
|
+included with SDL.
|
||||||
|
+.SH OPTIONS
|
||||||
|
+.TP
|
||||||
|
+.B --cflags
|
||||||
|
+Print the compiler flags that are necessary to compile a program or library
|
||||||
|
+that uses SDL.
|
||||||
|
+.TP
|
||||||
|
+.BI --exec-prefix= DIR
|
||||||
|
+If specified, use
|
||||||
|
+.I DIR
|
||||||
|
+instead of the installation exec prefix that SDL was build with when computing
|
||||||
|
+the output for the --exec-prefix option. This option must be specified before
|
||||||
|
+any of the --cflags, and --libs options.
|
||||||
|
+.TP
|
||||||
|
+.B --libs
|
||||||
|
+Print the linker flags that are necessary to link a program that uses SDL.
|
||||||
|
+.TP
|
||||||
|
+.BI --prefix= DIR
|
||||||
|
+If specified, use DIR instead of the installation prefix that SDL was built
|
||||||
|
+with when computing the output for the --prefix, and --exec-prefix options.
|
||||||
|
+This option is also used for the exec prefix if --exec-prefix was not
|
||||||
|
+specified. This option must be specified before any of the --cflags, and
|
||||||
|
+--libs options.
|
||||||
|
+.TP
|
||||||
|
+.B --static-libs
|
||||||
|
+Print the linker flags that are necessary to statically link a program that uses SDL.
|
||||||
|
+.TP
|
||||||
|
+.B --version
|
||||||
|
+Prints the currently installed version of SDL on standard output.
|
||||||
|
+.SH EXAMPLES
|
||||||
|
+.TP
|
||||||
|
+gcc -o main.o $(sdl-config --cflags) main.c
|
||||||
|
+is how you might use
|
||||||
|
+.B sdl-config
|
||||||
|
+to compile a C source file for an executable program.
|
||||||
|
+.TP
|
||||||
|
+gcc -o my_app $(sdl-config --libs) main.o util.o
|
||||||
|
+is how you might use
|
||||||
|
+.B sdl-config
|
||||||
|
+to link compiled objects into an executable program.
|
||||||
|
+.SH AUTHOR
|
||||||
|
+The Simple DirectMedia Layer (SDL) library was written by Sam Lantinga.
|
||||||
|
+.PP
|
||||||
|
+This manual page was written by Branden Robinson, originally for Progeny
|
||||||
|
+Linux Systems, Inc., and the Debian Project.
|
||||||
|
+.PP
|
||||||
|
+This manual page was modified by Petr Pisar to match original SDL distribution.
|
||||||
16
SDL-1.2.15-const_XData32.patch
Normal file
16
SDL-1.2.15-const_XData32.patch
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
libX11-1.5.99.901 has changed prototype of _XData32
|
||||||
|
|
||||||
|
<http://bugzilla.libsdl.org/show_bug.cgi?id=1769>
|
||||||
|
|
||||||
|
diff -r b6b2829cd7ef src/video/x11/SDL_x11sym.h
|
||||||
|
--- a/src/video/x11/SDL_x11sym.h Wed Feb 27 15:20:31 2013 -0800
|
||||||
|
+++ b/src/video/x11/SDL_x11sym.h Wed Mar 27 16:07:23 2013 +0100
|
||||||
|
@@ -165,7 +165,7 @@
|
||||||
|
*/
|
||||||
|
#ifdef LONG64
|
||||||
|
SDL_X11_MODULE(IO_32BIT)
|
||||||
|
-SDL_X11_SYM(int,_XData32,(Display *dpy,register long *data,unsigned len),(dpy,data,len),return)
|
||||||
|
+SDL_X11_SYM(int,_XData32,(Display *dpy,register _Xconst long *data,unsigned len),(dpy,data,len),return)
|
||||||
|
SDL_X11_SYM(void,_XRead32,(Display *dpy,register long *data,long len),(dpy,data,len),)
|
||||||
|
#endif
|
||||||
|
|
||||||
20
SDL-1.2.15-ignore_insane_joystick_axis.patch
Normal file
20
SDL-1.2.15-ignore_insane_joystick_axis.patch
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
changeset: 6324:95abff7adcc2
|
||||||
|
branch: SDL-1.2
|
||||||
|
parent: 6306:2b923729fd01
|
||||||
|
user: Ryan C. Gordon <icculus@icculus.org>
|
||||||
|
date: Sun Jun 03 04:49:25 2012 -0400
|
||||||
|
summary: Linux evdev: ignore joystick axis events if they aren't in a sane range.
|
||||||
|
|
||||||
|
diff -r 2b923729fd01 -r 95abff7adcc2 src/joystick/linux/SDL_sysjoystick.c
|
||||||
|
--- a/src/joystick/linux/SDL_sysjoystick.c Sat May 12 23:32:51 2012 -0700
|
||||||
|
+++ b/src/joystick/linux/SDL_sysjoystick.c Sun Jun 03 04:49:25 2012 -0400
|
||||||
|
@@ -1106,6 +1106,9 @@
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case EV_ABS:
|
||||||
|
+ if (code > ABS_MISC) {
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
switch (code) {
|
||||||
|
case ABS_HAT0X:
|
||||||
|
case ABS_HAT0Y:
|
||||||
24
SDL-1.2.15-no-default-backing-store.patch
Normal file
24
SDL-1.2.15-no-default-backing-store.patch
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
Do not harness backing store by default
|
||||||
|
|
||||||
|
xorg-server 1.15 enables backing store if composite extension is enabled
|
||||||
|
(default settings). Harnessing backing store through compositor leads to
|
||||||
|
tearing effect.
|
||||||
|
|
||||||
|
This patch reverts default harnessing backing store to conditional use if
|
||||||
|
SDL_VIDEO_X11_BACKINGSTORE environment variable exists.
|
||||||
|
|
||||||
|
<https://bugzilla.libsdl.org/show_bug.cgi?id=2383>
|
||||||
|
<https://bugzilla.redhat.com/show_bug.cgi?id=1073057>
|
||||||
|
|
||||||
|
diff -up SDL-1.2.15/src/video/x11/SDL_x11video.c.jx SDL-1.2.15/src/video/x11/SDL_x11video.c
|
||||||
|
--- SDL-1.2.15/src/video/x11/SDL_x11video.c.jx 2012-01-19 01:30:06.000000000 -0500
|
||||||
|
+++ SDL-1.2.15/src/video/x11/SDL_x11video.c 2014-03-04 14:39:34.691545549 -0500
|
||||||
|
@@ -1088,7 +1088,7 @@ static int X11_CreateWindow(_THIS, SDL_S
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
-#if 0 /* This is an experiment - are the graphics faster now? - nope. */
|
||||||
|
+#if 1 /* This is an experiment - are the graphics faster now? - nope. */
|
||||||
|
if ( SDL_getenv("SDL_VIDEO_X11_BACKINGSTORE") )
|
||||||
|
#endif
|
||||||
|
/* Cache the window in the server, when possible */
|
||||||
87
SDL-1.2.15-vec_perm-ppc64le.patch
Normal file
87
SDL-1.2.15-vec_perm-ppc64le.patch
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
Correct vec_perm() application on little-endian 64-bit PowerPC
|
||||||
|
|
||||||
|
The LE transformation for vec_perm has an implicit assumption that the
|
||||||
|
permutation is being used to reorder vector elements (in this case 4-byte
|
||||||
|
integer word elements), not to reorder bytes within those elements. Although
|
||||||
|
this is legal behavior, it is not anticipated by the transformation performed
|
||||||
|
by the compilers.
|
||||||
|
|
||||||
|
This causes pygame-1.9.1 test failure on PPC64LE because blitted pixmaps are
|
||||||
|
corrupted there due to how SDL uses vec_perm().
|
||||||
|
|
||||||
|
<https://bugzilla.redhat.com/show_bug.cgi?id=1392465>
|
||||||
|
|
||||||
|
--- SDL-1.2.15/src/video/SDL_blit_N.c.ori 2017-09-04 05:56:17.759347525 -0400
|
||||||
|
+++ SDL-1.2.15/src/video/SDL_blit_N.c 2017-09-06 05:36:20.570789610 -0400
|
||||||
|
@@ -146,6 +146,32 @@ static vector unsigned char calc_swizzle
|
||||||
|
return(vswiz);
|
||||||
|
}
|
||||||
|
|
||||||
|
+/* reorder bytes for PowerPC little endian */
|
||||||
|
+static vector unsigned char reorder_ppc64le_vec(vector unsigned char vpermute)
|
||||||
|
+{
|
||||||
|
+ /* The result vector of calc_swizzle32 reorder bytes using vec_perm.
|
||||||
|
+ The LE transformation for vec_perm has an implicit assumption
|
||||||
|
+ that the permutation is being used to reorder vector elements,
|
||||||
|
+ not to reorder bytes within those elements.
|
||||||
|
+ Unfortunatly the result order is not the expected one for powerpc
|
||||||
|
+ little endian when the two first vector parameters of vec_perm are
|
||||||
|
+ not of type 'vector char'. This is because the numbering from the
|
||||||
|
+ left for BE, and numbering from the right for LE, produces a
|
||||||
|
+ different interpretation of what the odd and even lanes are.
|
||||||
|
+ Refer to fedora bug 1392465
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+ const vector unsigned char ppc64le_reorder = VECUINT8_LITERAL(
|
||||||
|
+ 0x01, 0x00, 0x03, 0x02,
|
||||||
|
+ 0x05, 0x04, 0x07, 0x06,
|
||||||
|
+ 0x09, 0x08, 0x0B, 0x0A,
|
||||||
|
+ 0x0D, 0x0C, 0x0F, 0x0E );
|
||||||
|
+
|
||||||
|
+ vector unsigned char vswiz_ppc64le;
|
||||||
|
+ vswiz_ppc64le = vec_perm(vpermute, vpermute, ppc64le_reorder);
|
||||||
|
+ return(vswiz_ppc64le);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
static void Blit_RGB888_RGB565(SDL_BlitInfo *info);
|
||||||
|
static void Blit_RGB888_RGB565Altivec(SDL_BlitInfo *info) {
|
||||||
|
int height = info->d_height;
|
||||||
|
@@ -631,6 +657,12 @@ static void Blit32to32KeyAltivec(SDL_Bli
|
||||||
|
vsel = (vector unsigned char)vec_and(vs, vrgbmask);
|
||||||
|
vsel = (vector unsigned char)vec_cmpeq(vs, vckey);
|
||||||
|
/* permute the src vec to the dest format */
|
||||||
|
+
|
||||||
|
+#if defined(__powerpc__) && (SDL_BYTEORDER == SDL_LIL_ENDIAN)
|
||||||
|
+ /* reorder bytes for PowerPC little endian */
|
||||||
|
+ vpermute = reorder_ppc64le_vec(vpermute);
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
vs = vec_perm(vs, valpha, vpermute);
|
||||||
|
/* load the destination vec */
|
||||||
|
vd = vec_ld(0, dstp);
|
||||||
|
@@ -704,6 +736,12 @@ static void ConvertAltivec32to32_noprefe
|
||||||
|
src += 4;
|
||||||
|
width -= 4;
|
||||||
|
vbits = vec_perm(vbits, voverflow, valigner); /* src is ready. */
|
||||||
|
+
|
||||||
|
+#if defined(__powerpc__) && (SDL_BYTEORDER == SDL_LIL_ENDIAN)
|
||||||
|
+ /* reorder bytes for PowerPC little endian */
|
||||||
|
+ vpermute = reorder_ppc64le_vec(vpermute);
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
vbits = vec_perm(vbits, vzero, vpermute); /* swizzle it. */
|
||||||
|
vec_st(vbits, 0, dst); /* store it back out. */
|
||||||
|
dst += 4;
|
||||||
|
@@ -786,6 +824,12 @@ static void ConvertAltivec32to32_prefetc
|
||||||
|
src += 4;
|
||||||
|
width -= 4;
|
||||||
|
vbits = vec_perm(vbits, voverflow, valigner); /* src is ready. */
|
||||||
|
+
|
||||||
|
+#if defined(__powerpc__) && (SDL_BYTEORDER == SDL_LIL_ENDIAN)
|
||||||
|
+ /* reorder bytes for PowerPC little endian */
|
||||||
|
+ vpermute = reorder_ppc64le_vec(vpermute);
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
vbits = vec_perm(vbits, vzero, vpermute); /* swizzle it. */
|
||||||
|
vec_st(vbits, 0, dst); /* store it back out. */
|
||||||
|
dst += 4;
|
||||||
BIN
SDL-1.2.15_repackaged.tar.gz
Normal file
BIN
SDL-1.2.15_repackaged.tar.gz
Normal file
Binary file not shown.
111
SDL.spec
Normal file
111
SDL.spec
Normal file
@ -0,0 +1,111 @@
|
|||||||
|
Name: SDL
|
||||||
|
Summary: A cross-platform multimedia library
|
||||||
|
Version: 1.2.15
|
||||||
|
Release: 34
|
||||||
|
License: LGPLv2+
|
||||||
|
URL: http://www.libsdl.org/
|
||||||
|
|
||||||
|
# These files are from fedora
|
||||||
|
Source0: %{name}-%{version}_repackaged.tar.gz
|
||||||
|
Source1: SDL_config.h
|
||||||
|
Source2: repackage.sh
|
||||||
|
Patch0: SDL-1.2.12-multilib.patch
|
||||||
|
Patch1: SDL-1.2.10-GrabNotViewable.patch
|
||||||
|
Patch2: SDL-1.2.15-const_XData32.patch
|
||||||
|
Patch3: SDL-1.2.15-add_sdl_config_man.patch
|
||||||
|
Patch4: SDL-1.2.15-ignore_insane_joystick_axis.patch
|
||||||
|
Patch5: SDL-1.2.15-no-default-backing-store.patch
|
||||||
|
Patch6: SDL-1.2.15-SDL_EnableUNICODE_drops_keyboard_events.patch
|
||||||
|
Patch7: SDL-1.2.15-vec_perm-ppc64le.patch
|
||||||
|
|
||||||
|
# These patches are backport from SDL community
|
||||||
|
Patch9000: CVE-2019-7637.patch
|
||||||
|
Patch9001: CVE-2019-7636.patch
|
||||||
|
Patch9002: CVE-2019-7635_1.patch
|
||||||
|
Patch9003: CVE-2019-7635_2.patch
|
||||||
|
Patch9004: CVE-2019-7573_CVE-2019-7576.patch
|
||||||
|
Patch9005: CVE-2019-7578.patch
|
||||||
|
Patch9006: CVE-2019-7577.patch
|
||||||
|
|
||||||
|
BuildRequires: git alsa-lib-devel gdb-headless
|
||||||
|
|
||||||
|
%description
|
||||||
|
Simple DirectMedia Layer(SDL) is a cross-platform development library designed\
|
||||||
|
to provide low level access to audio, keyboard, mouse, joystick, and graphics\
|
||||||
|
hardware via OpenGL and Direct3D. It is used by video playback software, emulators,\
|
||||||
|
and popular games including Valve's award winning catalog and many Humble Bundle games.\
|
||||||
|
|
||||||
|
%package devel
|
||||||
|
Summary: Development files for %{name}
|
||||||
|
Provides: %{name}-static
|
||||||
|
Obsoletes: %{name}-static
|
||||||
|
Requires: %{name} = %{version}-%{release}
|
||||||
|
Requires: alsa-lib-devel mesa-libGL-devel mesa-libGLU-devel
|
||||||
|
Requires: libX11-devel libXext-devel libXrandr-devel libXrender-devel
|
||||||
|
|
||||||
|
%description devel
|
||||||
|
Libraries and header files of %{name} are all in the %{name}-devel package.
|
||||||
|
|
||||||
|
%package help
|
||||||
|
Summary: Help manual for %{name}
|
||||||
|
|
||||||
|
%description help
|
||||||
|
The %{name}-help package conatins man manual etc
|
||||||
|
|
||||||
|
%prep
|
||||||
|
%autosetup -n %{name}-%{version} -p1 -Sgit
|
||||||
|
for F in CREDITS; do
|
||||||
|
iconv -f iso8859-1 -t utf-8 < "$F" > "${F}.utf"
|
||||||
|
touch --reference "$F" "${F}.utf"
|
||||||
|
mv "${F}.utf" "$F"
|
||||||
|
done
|
||||||
|
sed -i -e 's/.*AM_PATH_ESD.*//' configure.in
|
||||||
|
cp -p %{_datadir}/automake-*/config.{sub,guess} build-scripts
|
||||||
|
|
||||||
|
%build
|
||||||
|
aclocal
|
||||||
|
libtoolize
|
||||||
|
autoconf
|
||||||
|
%configure \
|
||||||
|
--disable-video-svga \
|
||||||
|
--disable-video-ggi \
|
||||||
|
--disable-video-aalib \
|
||||||
|
--enable-sdl-dlopen \
|
||||||
|
--disable-arts \
|
||||||
|
--disable-esd \
|
||||||
|
--disable-nas \
|
||||||
|
--enable-pulseaudio-shared \
|
||||||
|
--enable-alsa \
|
||||||
|
--disable-video-ps3 \
|
||||||
|
--disable-rpath
|
||||||
|
%make_build
|
||||||
|
|
||||||
|
%install
|
||||||
|
%make_install
|
||||||
|
# Rename SDL_config.h to SDL_config-<arch>.h to avoid file conflicts on
|
||||||
|
# multilib systems and install SDL_config.h wrapper
|
||||||
|
mv %{buildroot}/%{_includedir}/SDL/SDL_config.h %{buildroot}/%{_includedir}/SDL/SDL_config-%{_arch}.h
|
||||||
|
install -m644 %{SOURCE1} %{buildroot}/%{_includedir}/SDL/SDL_config.h
|
||||||
|
rm -f %{buildroot}%{_libdir}/*.la
|
||||||
|
|
||||||
|
%files
|
||||||
|
%license COPYING
|
||||||
|
%doc BUGS CREDITS README-SDL.txt
|
||||||
|
%{_libdir}/lib*.so.*
|
||||||
|
|
||||||
|
%files devel
|
||||||
|
%doc README docs.html docs/html docs/index.html TODO WhatsNew
|
||||||
|
%{_bindir}/*-config
|
||||||
|
%{_libdir}/lib*.so
|
||||||
|
%{_libdir}/pkgconfig/sdl.pc
|
||||||
|
%{_includedir}/SDL
|
||||||
|
%{_datadir}/aclocal/*
|
||||||
|
%{_libdir}/lib*.a
|
||||||
|
|
||||||
|
%files help
|
||||||
|
%{_mandir}/man1/*
|
||||||
|
%{_mandir}/man3/SDL*.3*
|
||||||
|
|
||||||
|
%changelog
|
||||||
|
* Wed Nov 13 2019 openEuler Buildteam <buildteam@openeuler.org> - 1.2.15-34
|
||||||
|
- Package init
|
||||||
80
SDL_config.h
Normal file
80
SDL_config.h
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
/*
|
||||||
|
SDL - Simple DirectMedia Layer
|
||||||
|
Copyright (C) 1997-2006 Sam Lantinga
|
||||||
|
|
||||||
|
This library is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Lesser General Public
|
||||||
|
License as published by the Free Software Foundation; either
|
||||||
|
version 2.1 of the License, or (at your option) any later version.
|
||||||
|
|
||||||
|
This library is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
Lesser General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Lesser General Public
|
||||||
|
License along with this library; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
|
||||||
|
Sam Lantinga
|
||||||
|
slouken@libsdl.org
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This SDL_config.h is a wrapper include file for the original SDL_config.h,
|
||||||
|
* which has been renamed to SDL_config-<arch>.h. There are conflicts for the
|
||||||
|
* original SDL_config.h on multilib systems, which result from arch-specific
|
||||||
|
* configuration options. Please do not use the arch-specific file directly.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2006 Red Hat, Inc.
|
||||||
|
* Thomas Woerner <twoerner@redhat.com>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef SDL_config_wrapper_h
|
||||||
|
#error "SDL_config_wrapper_h should not be defined!"
|
||||||
|
#endif
|
||||||
|
#define SDL_config_wrapper_h
|
||||||
|
|
||||||
|
#if defined(__i386__)
|
||||||
|
#include "SDL_config-i386.h"
|
||||||
|
#elif defined(__ia64__)
|
||||||
|
#include "SDL_config-ia64.h"
|
||||||
|
#elif defined(__powerpc64__)
|
||||||
|
#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
|
||||||
|
#include "SDL_config-ppc64.h"
|
||||||
|
#else
|
||||||
|
#include "SDL_config-ppc64le.h"
|
||||||
|
#endif
|
||||||
|
#elif defined(__powerpc__)
|
||||||
|
#include "SDL_config-ppc.h"
|
||||||
|
#elif defined(__s390x__)
|
||||||
|
#include "SDL_config-s390x.h"
|
||||||
|
#elif defined(__s390__)
|
||||||
|
#include "SDL_config-s390.h"
|
||||||
|
#elif defined(__x86_64__)
|
||||||
|
#include "SDL_config-x86_64.h"
|
||||||
|
#elif defined(__arm__)
|
||||||
|
#include "SDL_config-arm.h"
|
||||||
|
#elif defined(__alpha__)
|
||||||
|
#include "SDL_config-alpha.h"
|
||||||
|
#elif defined(__sparc__) && defined (__arch64__)
|
||||||
|
#include "SDL_config-sparc64.h"
|
||||||
|
#elif defined(__sparc__)
|
||||||
|
#include "SDL_config-sparc.h"
|
||||||
|
#elif defined(__aarch64__)
|
||||||
|
#include "SDL_config-aarch64.h"
|
||||||
|
#elif defined(__mips64) && defined(__MIPSEL__)
|
||||||
|
#include "SDL_config-mips64el.h"
|
||||||
|
#elif defined(__mips64)
|
||||||
|
#include "SDL_config-mips64.h"
|
||||||
|
#elif defined(__mips) && defined(__MIPSEL__)
|
||||||
|
#include "SDL_config-mipsel.h"
|
||||||
|
#elif defined(__mips)
|
||||||
|
#include "SDL_config-mips.h"
|
||||||
|
#elif defined(__riscv) && defined(__riscv_xlen) && __riscv_xlen == 64
|
||||||
|
#include "SDL_config-riscv64.h"
|
||||||
|
#else
|
||||||
|
#error "The SDL-devel package is not usable with the architecture."
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#undef SDL_config_wrapper_h
|
||||||
59
repackage.sh
Normal file
59
repackage.sh
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# Copyright (C) 2010 Red Hat, Inc.
|
||||||
|
# Authors:
|
||||||
|
# Thomas Woerner <twoerner@redhat.com>
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; either version 2 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
|
||||||
|
version=$1
|
||||||
|
[ -z "$version" ] && { echo "Usage: $0 <version>"; exit 1; }
|
||||||
|
|
||||||
|
# files to be removed without the main SDL-<version>/ prefix
|
||||||
|
declare -a REMOVE
|
||||||
|
REMOVE[${#REMOVE[*]}]="symbian.zip"
|
||||||
|
|
||||||
|
# no changes below this line should be needed
|
||||||
|
|
||||||
|
orig="SDL-${version}"
|
||||||
|
orig_tgz="${orig}.tar.gz"
|
||||||
|
repackaged="${orig}_repackaged"
|
||||||
|
repackaged_tar="${repackaged}.tar"
|
||||||
|
repackaged_tgz="${repackaged_tar}.gz"
|
||||||
|
|
||||||
|
# pre checks
|
||||||
|
[ ! -f "${orig_tgz}" ] && { echo "ERROR: ${orig_tgz} does not exist"; exit 1; }
|
||||||
|
[ -f "${repackaged_tgz}" ] && { echo "ERROR: ${repackaged_tgz} already exist"; exit 1; }
|
||||||
|
|
||||||
|
# repackage
|
||||||
|
failure=0
|
||||||
|
gzip -dc "${orig_tgz}" > "${repackaged_tar}"
|
||||||
|
for file in "${REMOVE[@]}"; do
|
||||||
|
tar -f "${repackaged_tar}" --delete "${orig}/${file}" >> repackage.log
|
||||||
|
[ $? != 0 ] && { echo "ERROR: Could not remove file ${orig}/${file} from archive."; failure=1; } || echo "Removed ${orig}/${file} from archive."
|
||||||
|
done
|
||||||
|
[ $failure != 0 ] && { echo "See repackage.log for details."; exit 1; }
|
||||||
|
gzip -9 -n "${repackaged_tar}"
|
||||||
|
|
||||||
|
# post checks
|
||||||
|
RET=0
|
||||||
|
for file in "${REMOVE[@]}"; do
|
||||||
|
found=$(tar -ztvf "${repackaged_tgz}" | grep "${file}")
|
||||||
|
[ -n "$found" ] && { echo "ERROR: file ${file} is still in the repackaged archive."; RET=1; }
|
||||||
|
done
|
||||||
|
|
||||||
|
[ $RET == 0 ] && echo "Sucessfully repackaged ${orig}: ${repackaged_tgz}"
|
||||||
|
|
||||||
|
exit $RET
|
||||||
Loading…
x
Reference in New Issue
Block a user