Added SDL (for aliguori)
[fedora-mingw.git] / SDL / SDL-1.2.13-pulse-rework.patch
diff --git a/SDL/SDL-1.2.13-pulse-rework.patch b/SDL/SDL-1.2.13-pulse-rework.patch
new file mode 100644 (file)
index 0000000..ce8d0e8
--- /dev/null
@@ -0,0 +1,132 @@
+--- SDL-1.2.13/src/audio/pulse/SDL_pulseaudio.c        2007-12-31 05:47:58.000000000 +0100
++++ SDL-1.2.13.lennart/src/audio/pulse/SDL_pulseaudio.c        2008-03-31 16:09:05.000000000 +0200
+@@ -1,3 +1,4 @@
++/* -*- Mode: C; c-basic-offset: 8; indent-tabs-mode: t -*- */
+ /*
+     SDL - Simple DirectMedia Layer
+     Copyright (C) 1997-2007 Sam Lantinga
+@@ -18,7 +19,7 @@
+     Stéphan Kochen
+     stephan@kochen.nl
+-    
++
+     Based on parts of the ALSA and ESounD output drivers.
+ */
+ #include "SDL_config.h"
+@@ -78,14 +79,14 @@ static int (*SDL_NAME(pa_simple_write))(
+       pa_simple *s,
+       const void *data,
+       size_t length,
+-      int *error 
++      int *error
+ );
+ static pa_channel_map* (*SDL_NAME(pa_channel_map_init_auto))(
+       pa_channel_map *m,
+       unsigned channels,
+       pa_channel_map_def_t def
+ );
+-      
++
+ static struct {
+       const char *name;
+@@ -158,16 +159,16 @@ static int Audio_Available(void)
+       if ( LoadPulseLibrary() < 0 ) {
+               return available;
+       }
+-      
++
+       /* Connect with a dummy format. */
+       paspec.format = PA_SAMPLE_U8;
+       paspec.rate = 11025;
+       paspec.channels = 1;
+       connection = SDL_NAME(pa_simple_new)(
+-              SDL_getenv("PASERVER"),      /* server */
++              NULL,                        /* server */
+               "Test stream",               /* application name */
+               PA_STREAM_PLAYBACK,          /* playback mode */
+-              SDL_getenv("PADEVICE"),      /* device on the server */
++              NULL,                        /* device on the server */
+               "Simple DirectMedia Layer",  /* stream description */
+               &paspec,                     /* sample format spec */
+               NULL,                        /* channel map */
+@@ -178,7 +179,7 @@ static int Audio_Available(void)
+               available = 1;
+               SDL_NAME(pa_simple_free)(connection);
+       }
+-      
++
+       UnloadPulseLibrary();
+       return(available);
+ }
+@@ -233,7 +234,7 @@ static void PULSE_WaitAudio(_THIS)
+ {
+       /* Check to see if the thread-parent process is still alive */
+       { static int cnt = 0;
+-              /* Note that this only works with thread implementations 
++              /* Note that this only works with thread implementations
+                  that use a different process id for each thread.
+               */
+               if (parent && (((++cnt)%10) == 0)) { /* Check every 10 loops */
+@@ -302,7 +303,7 @@ static int PULSE_OpenAudio(_THIS, SDL_Au
+       pa_sample_spec  paspec;
+       pa_buffer_attr  paattr;
+       pa_channel_map  pacmap;
+-      
++
+       paspec.format = PA_SAMPLE_INVALID;
+       for ( test_format = SDL_FirstAudioFormat(spec->format); test_format; ) {
+               switch ( test_format ) {
+@@ -324,7 +325,7 @@ static int PULSE_OpenAudio(_THIS, SDL_Au
+               return(-1);
+       }
+       spec->format = test_format;
+-      
++
+       paspec.channels = spec->channels;
+       paspec.rate = spec->freq;
+@@ -338,25 +339,24 @@ static int PULSE_OpenAudio(_THIS, SDL_Au
+               return(-1);
+       }
+       SDL_memset(mixbuf, spec->silence, spec->size);
+-      
++
+       /* Reduced prebuffering compared to the defaults. */
+-      paattr.tlength = mixlen;
++      paattr.tlength = mixlen*2;
+       paattr.minreq = mixlen;
+-      paattr.fragsize = mixlen;
+-      paattr.prebuf = mixlen;
+-      paattr.maxlength = mixlen * 4;
+-      
++      paattr.prebuf = mixlen*2;
++      paattr.maxlength = mixlen*2;
++
+       /* The SDL ALSA output hints us that we use Windows' channel mapping */
+       /* http://bugzilla.libsdl.org/show_bug.cgi?id=110 */
+       SDL_NAME(pa_channel_map_init_auto)(
+               &pacmap, spec->channels, PA_CHANNEL_MAP_WAVEEX);
+-      
++
+       /* Connect to the PulseAudio server */
+       stream = SDL_NAME(pa_simple_new)(
+-              SDL_getenv("PASERVER"),      /* server */
++              NULL,                        /* server */
+               get_progname(),              /* application name */
+               PA_STREAM_PLAYBACK,          /* playback mode */
+-              SDL_getenv("PADEVICE"),      /* device on the server */
++              NULL,                        /* device on the server */
+               "Simple DirectMedia Layer",  /* stream description */
+               &paspec,                     /* sample format spec */
+               &pacmap,                     /* channel map */
+@@ -371,7 +371,6 @@ static int PULSE_OpenAudio(_THIS, SDL_Au
+       /* Get the parent process id (we're the parent of the audio thread) */
+       parent = getpid();
+-      
++
+       return(0);
+ }
+-