diff options
Diffstat (limited to 'fix-pulseaudio.patch')
-rw-r--r-- | fix-pulseaudio.patch | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/fix-pulseaudio.patch b/fix-pulseaudio.patch new file mode 100644 index 000000000000..cb7464febc7b --- /dev/null +++ b/fix-pulseaudio.patch @@ -0,0 +1,61 @@ +--- EMULib/Unix/SndUnix.c.orig 2016-01-24 20:00:56.000000000 +0200 ++++ EMULib/Unix/SndUnix.c 2017-09-14 14:32:07.611308693 +0300 +@@ -100,7 +100,13 @@ + #define AUDIO_CONV(A) (128+(A)) + #endif + ++#if defined(PULSE_AUDIO) ++#define SOUNDFD_INVALID NULL ++static pa_simple* SoundFD = NULL; ++#else ++#define SOUNDFD_INVALID (-1) + static int SoundFD = -1; /* Audio device descriptor */ ++#endif + static int SndRate = 0; /* Audio sampling rate */ + static int SndSize = 0; /* SndData[] size */ + static sample *SndData = 0; /* Audio buffers */ +@@ -118,7 +124,7 @@ + int J; + + /* Spin until audio has been trashed */ +- for(RPtr=WPtr=0;SndRate&&SndData&&(SoundFD>=0);) ++ for(RPtr=WPtr=0;SndRate&&SndData&&(SoundFD!=SOUNDFD_INVALID);) + { + #if defined(PULSE_AUDIO) + if(SoundFD) +@@ -158,7 +164,7 @@ + /* Shut down audio, just to be sure */ + TrashAudio(); + SndRate = 0; +- SoundFD = -1; ++ SoundFD = SOUNDFD_INVALID; + SndSize = 0; + SndData = 0; + RPtr = 0; +@@ -182,7 +188,7 @@ + PASpec.channels = 1; + /* Try opening PulseAudio */ + if(!(SoundFD=pa_simple_new(0,"EMULib",PA_STREAM_PLAYBACK,0,"playback",&PASpec,0,0,0))) +- { SoundFD=-1;return(0); } ++ { SoundFD=SOUNDFD_INVALID;return(0); } + } + + #elif defined(ESD_AUDIO) +@@ -266,7 +272,7 @@ + if(Thr) pthread_join(Thr,0); + + /* If audio was initialized... */ +- if(SoundFD>=0) ++ if(SoundFD!=SOUNDFD_INVALID) + { + #if defined(PULSE_AUDIO) + if(SoundFD) pa_simple_free(SoundFD); +@@ -284,7 +290,7 @@ + if(SndData) free(SndData); + + /* Sound trashed */ +- SoundFD = -1; ++ SoundFD = SOUNDFD_INVALID; + SndData = 0; + SndSize = 0; + RPtr = 0; |