diff --git a/.cvsignore b/.cvsignore index 003c9af..128799d 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1 +1 @@ -audacity-src-1.3.5.tar.bz2 +audacity-minsrc-1.3.7.tar.bz2 diff --git a/audacity-1.3.4-libmp3lame-default.patch b/audacity-1.3.4-libmp3lame-default.patch deleted file mode 100644 index b53eed0..0000000 --- a/audacity-1.3.4-libmp3lame-default.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -Nur audacity-src-1.3.4-beta-orig/src/AudacityApp.cpp audacity-src-1.3.4-beta/src/AudacityApp.cpp ---- audacity-src-1.3.4-beta-orig/src/AudacityApp.cpp 2008-01-23 18:32:52.000000000 +0100 -+++ audacity-src-1.3.4-beta/src/AudacityApp.cpp 2008-04-12 16:40:33.000000000 +0200 -@@ -726,6 +726,8 @@ - return false; - } - -+ gPrefs->Write(wxT("/MP3/MP3LibPath"),wxT("__RPM_LIBDIR__/libmp3lame.so.0")); -+ - // More initialization - InitCleanSpeech(); - diff --git a/audacity-1.3.5-flac-import.patch b/audacity-1.3.5-flac-import.patch deleted file mode 100644 index c78ab23..0000000 --- a/audacity-1.3.5-flac-import.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -Nur audacity-src-1.3.5-beta-orig/src/import/ImportFLAC.cpp audacity-src-1.3.5-beta/src/import/ImportFLAC.cpp ---- audacity-src-1.3.5-beta-orig/src/import/ImportFLAC.cpp 2008-05-07 23:19:50.000000000 +0200 -+++ audacity-src-1.3.5-beta/src/import/ImportFLAC.cpp 2008-11-07 13:48:58.000000000 +0100 -@@ -370,6 +370,8 @@ - Tags *tags) - { - wxASSERT(mStreamInfoDone); -+ if (!mStreamInfoDone) -+ return false; - - mChannels = new WaveTrack *[mNumChannels]; - diff --git a/audacity-1.3.5-fr.patch b/audacity-1.3.5-fr.patch deleted file mode 100644 index 91cf716..0000000 --- a/audacity-1.3.5-fr.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -Nur audacity-src-1.3.5-beta-orig/locale/fr.po audacity-src-1.3.5-beta/locale/fr.po ---- audacity-src-1.3.5-beta-orig/locale/fr.po 2008-05-07 23:20:10.000000000 +0200 -+++ audacity-src-1.3.5-beta/locale/fr.po 2008-06-08 22:13:18.000000000 +0200 -@@ -2831,7 +2831,7 @@ - - #: Project.cpp:1746 - msgid "Audacity projects|*.aup|" --msgstr "Projets Audacity (*.aup)|*.aup" -+msgstr "Projets Audacity (*.aup)|*.aup|" - - #: Project.cpp:1799 - #: Project.cpp:2186 diff --git a/audacity-1.3.5-libdir.patch b/audacity-1.3.5-libdir.patch deleted file mode 100644 index a49e963..0000000 --- a/audacity-1.3.5-libdir.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff -Nur audacity-src-1.3.5-beta-orig/src/effects/ladspa/LoadLadspa.cpp audacity-src-1.3.5-beta/src/effects/ladspa/LoadLadspa.cpp ---- audacity-src-1.3.5-beta-orig/src/effects/ladspa/LoadLadspa.cpp 2008-05-07 23:19:50.000000000 +0200 -+++ audacity-src-1.3.5-beta/src/effects/ladspa/LoadLadspa.cpp 2008-11-04 14:21:26.000000000 +0100 -@@ -92,8 +92,8 @@ - - #ifdef __WXGTK__ - wxGetApp().AddUniquePathToPathList(wxT(INSTALL_PREFIX) wxT("/ladspa"), pathList); -- wxGetApp().AddUniquePathToPathList(wxT("/usr/local/lib/ladspa"), pathList); -- wxGetApp().AddUniquePathToPathList(wxT("/usr/lib/ladspa"), pathList); -+ wxGetApp().AddUniquePathToPathList(wxT("/usr/local/__RPM_LIB__/ladspa"), pathList); -+ wxGetApp().AddUniquePathToPathList(wxT("__RPM_LIBDIR__/ladspa"), pathList); - #endif - - #ifdef __WXMAC__ diff --git a/audacity-1.3.6-flac-import.patch b/audacity-1.3.6-flac-import.patch new file mode 100644 index 0000000..3a00115 --- /dev/null +++ b/audacity-1.3.6-flac-import.patch @@ -0,0 +1,12 @@ +diff -Nur audacity-src-1.3.6-orig/src/import/ImportFLAC.cpp audacity-src-1.3.6/src/import/ImportFLAC.cpp +--- audacity-src-1.3.6-orig/src/import/ImportFLAC.cpp 2008-10-25 14:14:27.000000000 +0200 ++++ audacity-src-1.3.6/src/import/ImportFLAC.cpp 2008-11-05 00:15:33.000000000 +0100 +@@ -361,6 +361,8 @@ + Tags *tags) + { + wxASSERT(mStreamInfoDone); ++ if (!mStreamInfoDone) ++ return eImportFailed; + + CreateProgress(); + diff --git a/audacity-1.3.7-libdir.patch b/audacity-1.3.7-libdir.patch new file mode 100644 index 0000000..bfd97c7 --- /dev/null +++ b/audacity-1.3.7-libdir.patch @@ -0,0 +1,12 @@ +diff -Nur audacity-src-1.3.6-orig/src/effects/ladspa/LoadLadspa.cpp audacity-src-1.3.6/src/effects/ladspa/LoadLadspa.cpp +--- audacity-src-1.3.6-orig/src/effects/ladspa/LoadLadspa.cpp 2008-10-24 08:56:32.000000000 +0200 ++++ audacity-src-1.3.6/src/effects/ladspa/LoadLadspa.cpp 2008-10-24 13:01:10.000000000 +0200 +@@ -279,7 +279,7 @@ + + #ifdef __WXGTK__ + wxGetApp().AddUniquePathToPathList(wxT(INSTALL_PREFIX) wxT("/ladspa"), pathList); +- wxGetApp().AddUniquePathToPathList(wxT("/usr/local/lib/ladspa"), pathList); ++ wxGetApp().AddUniquePathToPathList(wxT("/usr/local/__RPM_LIB__/ladspa"), pathList); + wxGetApp().AddUniquePathToPathList(wxT(LIBDIR) wxT("/ladspa"), pathList); + #endif + diff --git a/audacity-1.3.7-libmp3lame-default.patch b/audacity-1.3.7-libmp3lame-default.patch new file mode 100644 index 0000000..46b10f8 --- /dev/null +++ b/audacity-1.3.7-libmp3lame-default.patch @@ -0,0 +1,12 @@ +diff -Nur audacity-src-1.3.7-orig/src/AudacityApp.cpp audacity-src-1.3.7/src/AudacityApp.cpp +--- audacity-src-1.3.7-orig/src/AudacityApp.cpp 2009-01-27 21:50:58.000000000 +0100 ++++ audacity-src-1.3.7/src/AudacityApp.cpp 2009-02-02 19:02:32.000000000 +0100 +@@ -766,6 +766,8 @@ + return false; + } + ++ gPrefs->Write(wxT("/MP3/MP3LibPath"),wxT("__RPM_LIBDIR__/libmp3lame.so.0")); ++ + // More initialization + InitCleanSpeech(); + diff --git a/audacity-1.3.7-portaudio-non-mmap-alsa.patch b/audacity-1.3.7-portaudio-non-mmap-alsa.patch new file mode 100644 index 0000000..6ff8d2c --- /dev/null +++ b/audacity-1.3.7-portaudio-non-mmap-alsa.patch @@ -0,0 +1,369 @@ +diff -Nur audacity-src-1.3.7-orig/lib-src/portaudio-v19/src/hostapi/alsa/pa_linux_alsa.c audacity-src-1.3.7/lib-src/portaudio-v19/src/hostapi/alsa/pa_linux_alsa.c +--- audacity-src-1.3.7-orig/lib-src/portaudio-v19/src/hostapi/alsa/pa_linux_alsa.c 2009-01-27 21:51:40.000000000 +0100 ++++ audacity-src-1.3.7/lib-src/portaudio-v19/src/hostapi/alsa/pa_linux_alsa.c 2009-02-02 19:08:22.000000000 +0100 +@@ -6,6 +6,7 @@ + * + * Copyright (c) 2002 Joshua Haberman + * Copyright (c) 2005-2007 Arve Knudsen ++ * Copyright (c) 2008 Kevin Kofler + * + * Based on the Open Source API proposed by Ross Bencina + * Copyright (c) 1999-2002 Ross Bencina, Phil Burk +@@ -118,6 +119,8 @@ + unsigned long framesPerBuffer; + int numUserChannels, numHostChannels; + int userInterleaved, hostInterleaved; ++ int canMmap; ++ void *nonMmapBuffer; + PaDeviceIndex device; /* Keep the device index */ + + snd_pcm_t *pcm; +@@ -321,7 +324,7 @@ + * and a suitable result returned. The device is closed before returning. + */ + static PaError GropeDevice( snd_pcm_t* pcm, int isPlug, StreamDirection mode, int openBlocking, +- PaAlsaDeviceInfo* devInfo, int* canMmap ) ++ PaAlsaDeviceInfo* devInfo ) + { + PaError result = paNoError; + snd_pcm_hw_params_t *hwParams; +@@ -354,9 +357,6 @@ + snd_pcm_hw_params_alloca( &hwParams ); + snd_pcm_hw_params_any( pcm, hwParams ); + +- *canMmap = snd_pcm_hw_params_test_access( pcm, hwParams, SND_PCM_ACCESS_MMAP_INTERLEAVED ) >= 0 || +- snd_pcm_hw_params_test_access( pcm, hwParams, SND_PCM_ACCESS_MMAP_NONINTERLEAVED ) >= 0; +- + if( defaultSr >= 0 ) + { + /* Could be that the device opened in one mode supports samplerates that the other mode wont have, +@@ -566,7 +566,6 @@ + PaError result = 0; + PaDeviceInfo *baseDeviceInfo = &devInfo->baseDeviceInfo; + snd_pcm_t *pcm; +- int canMmap = -1; + PaUtilHostApiRepresentation *baseApi = &alsaApi->baseHostApiRep; + + /* Zero fields */ +@@ -580,8 +579,7 @@ + OpenPcm( &pcm, deviceName->alsaName, SND_PCM_STREAM_CAPTURE, blocking, 0 ) + >= 0 ) + { +- if( GropeDevice( pcm, deviceName->isPlug, StreamDirection_In, blocking, devInfo, +- &canMmap ) != paNoError ) ++ if( GropeDevice( pcm, deviceName->isPlug, StreamDirection_In, blocking, devInfo ) != paNoError ) + { + /* Error */ + PA_DEBUG(("%s: Failed groping %s for capture\n", __FUNCTION__, deviceName->alsaName)); +@@ -594,8 +592,7 @@ + OpenPcm( &pcm, deviceName->alsaName, SND_PCM_STREAM_PLAYBACK, blocking, 0 ) + >= 0 ) + { +- if( GropeDevice( pcm, deviceName->isPlug, StreamDirection_Out, blocking, devInfo, +- &canMmap ) != paNoError ) ++ if( GropeDevice( pcm, deviceName->isPlug, StreamDirection_Out, blocking, devInfo ) != paNoError ) + { + /* Error */ + PA_DEBUG(("%s: Failed groping %s for playback\n", __FUNCTION__, deviceName->alsaName)); +@@ -603,12 +600,6 @@ + } + } + +- if( 0 == canMmap ) +- { +- PA_DEBUG(("%s: Device %s doesn't support mmap\n", __FUNCTION__, deviceName->alsaName)); +- goto end; +- } +- + baseDeviceInfo->structVersion = 2; + baseDeviceInfo->hostApi = alsaApi->hostApiIndex; + baseDeviceInfo->name = deviceName->name; +@@ -1197,6 +1188,8 @@ + self->hostInterleaved = self->userInterleaved = !(userSampleFormat & paNonInterleaved); + self->numUserChannels = params->channelCount; + self->streamDir = streamDir; ++ self->canMmap = 0; ++ self->nonMmapBuffer = NULL; + + if( !callbackMode && !self->userInterleaved ) + { +@@ -1239,6 +1232,7 @@ + + PaError result = paNoError; + snd_pcm_access_t accessMode, alternateAccessMode; ++ snd_pcm_access_t rwAccessMode, alternateRwAccessMode; + int dir = 0; + snd_pcm_t *pcm = self->pcm; + double sr = *sampleRate; +@@ -1258,32 +1252,40 @@ + if( self->userInterleaved ) + { + accessMode = SND_PCM_ACCESS_MMAP_INTERLEAVED; ++ rwAccessMode = SND_PCM_ACCESS_RW_INTERLEAVED; + alternateAccessMode = SND_PCM_ACCESS_MMAP_NONINTERLEAVED; ++ alternateRwAccessMode = SND_PCM_ACCESS_RW_NONINTERLEAVED; + } + else + { + accessMode = SND_PCM_ACCESS_MMAP_NONINTERLEAVED; ++ rwAccessMode = SND_PCM_ACCESS_RW_NONINTERLEAVED; + alternateAccessMode = SND_PCM_ACCESS_MMAP_INTERLEAVED; ++ alternateRwAccessMode = SND_PCM_ACCESS_RW_INTERLEAVED; + } + /* If requested access mode fails, try alternate mode */ ++ self->canMmap = 1; + if( snd_pcm_hw_params_set_access( pcm, hwParams, accessMode ) < 0 ) + { +- int err = 0; +- if( (err = snd_pcm_hw_params_set_access( pcm, hwParams, alternateAccessMode )) < 0) ++ if( snd_pcm_hw_params_set_access( pcm, hwParams, rwAccessMode ) >= 0 ) ++ self->canMmap = 0; ++ else + { +- result = paUnanticipatedHostError; +- if( -EINVAL == err ) ++ if( snd_pcm_hw_params_set_access( pcm, hwParams, alternateAccessMode ) < 0 ) + { +- PaUtil_SetLastHostErrorInfo( paALSA, err, "PA ALSA requires that a device supports mmap access" ); +- } +- else +- { +- PaUtil_SetLastHostErrorInfo( paALSA, err, snd_strerror( err ) ); ++ int err = 0; ++ if( (err = snd_pcm_hw_params_set_access( pcm, hwParams, alternateRwAccessMode )) >= 0) ++ self->canMmap = 0; ++ else ++ { ++ result = paUnanticipatedHostError; ++ PaUtil_SetLastHostErrorInfo( paALSA, err, snd_strerror( err ) ); ++ goto error; ++ } + } +- goto error; ++ /* Flip mode */ ++ self->hostInterleaved = !self->userInterleaved; + } +- /* Flip mode */ +- self->hostInterleaved = !self->userInterleaved; + } + + ENSURE_( snd_pcm_hw_params_set_format( pcm, hwParams, self->nativeFormat ), paUnanticipatedHostError ); +@@ -1361,7 +1363,7 @@ + + ENSURE_( snd_pcm_sw_params_set_avail_min( self->pcm, swParams, self->framesPerBuffer ), paUnanticipatedHostError ); + ENSURE_( snd_pcm_sw_params_set_xfer_align( self->pcm, swParams, 1 ), paUnanticipatedHostError ); +- ENSURE_( snd_pcm_sw_params_set_tstamp_mode( self->pcm, swParams, SND_PCM_TSTAMP_MMAP ), paUnanticipatedHostError ); ++ ENSURE_( snd_pcm_sw_params_set_tstamp_mode( self->pcm, swParams, SND_PCM_TSTAMP_ENABLE ), paUnanticipatedHostError ); + + /* Set the parameters! */ + ENSURE_( snd_pcm_sw_params( self->pcm, swParams ), paUnanticipatedHostError ); +@@ -1589,6 +1591,10 @@ + } + } + ++ /* non-mmap mode needs a reasonably-sized buffer or it'll stutter */ ++ if( !self->canMmap && framesPerHostBuffer < 2048 ) ++ framesPerHostBuffer = 2048; ++ + assert( framesPerHostBuffer > 0 ); + { + snd_pcm_uframes_t min = 0, max = 0; +@@ -1831,12 +1837,13 @@ + PA_UNLESS( framesPerHostBuffer != 0, paInternalError ); + self->maxFramesPerHostBuffer = framesPerHostBuffer; + +- if( !accurate ) ++ if( !self->playback.canMmap || !accurate ) + { + /* Don't know the exact size per host buffer */ + *hostBufferSizeMode = paUtilBoundedHostBufferSize; + /* Raise upper bound */ +- ++self->maxFramesPerHostBuffer; ++ if( !accurate ) ++ ++self->maxFramesPerHostBuffer; + } + + error: +@@ -2059,9 +2066,11 @@ + { + /* Buffer isn't primed, so prepare and silence */ + ENSURE_( snd_pcm_prepare( stream->playback.pcm ), paUnanticipatedHostError ); +- SilenceBuffer( stream ); ++ if( stream->playback.canMmap ) ++ SilenceBuffer( stream ); + } +- ENSURE_( snd_pcm_start( stream->playback.pcm ), paUnanticipatedHostError ); ++ if( stream->playback.canMmap ) ++ ENSURE_( snd_pcm_start( stream->playback.pcm ), paUnanticipatedHostError ); + } + else + ENSURE_( snd_pcm_prepare( stream->playback.pcm ), paUnanticipatedHostError ); +@@ -2390,6 +2399,7 @@ + snd_pcm_status_t *st; + PaTime now = PaUtil_GetTime(); + snd_timestamp_t t; ++ int errplayback = 0, errcapture = 0; + + snd_pcm_status_alloca( &st ); + +@@ -2400,6 +2410,7 @@ + { + snd_pcm_status_get_trigger_tstamp( st, &t ); + self->underrun = now * 1000 - ((PaTime) t.tv_sec * 1000 + (PaTime) t.tv_usec / 1000); ++ errplayback = snd_pcm_recover( self->playback.pcm, -EPIPE, 0 ); + } + } + if( self->capture.pcm ) +@@ -2409,10 +2420,12 @@ + { + snd_pcm_status_get_trigger_tstamp( st, &t ); + self->overrun = now * 1000 - ((PaTime) t.tv_sec * 1000 + (PaTime) t.tv_usec / 1000); ++ errcapture = snd_pcm_recover( self->capture.pcm, -EPIPE, 0 ); + } + } + +- PA_ENSURE( AlsaRestart( self ) ); ++ if( errplayback || errcapture ) ++ PA_ENSURE( AlsaRestart( self ) ); + + end: + return result; +@@ -2563,7 +2576,7 @@ + static PaError PaAlsaStreamComponent_EndProcessing( PaAlsaStreamComponent *self, unsigned long numFrames, int *xrun ) + { + PaError result = paNoError; +- int res; ++ int res = 0; + + /* @concern FullDuplex It is possible that only one direction is marked ready after polling, and processed + * afterwards +@@ -2571,7 +2584,34 @@ + if( !self->ready ) + goto end; + +- res = snd_pcm_mmap_commit( self->pcm, self->offset, numFrames ); ++ if( !self->canMmap && StreamDirection_Out == self->streamDir ) ++ { ++ /* Play sound */ ++ if( self->hostInterleaved ) ++ res = snd_pcm_writei( self->pcm, self->nonMmapBuffer, numFrames ); ++ else ++ { ++ void *bufs[self->numHostChannels]; ++ int bufsize = snd_pcm_format_size( self->nativeFormat, self->framesPerBuffer + 1 ); ++ unsigned char *buffer = self->nonMmapBuffer; ++ int i; ++ for( i = 0; i < self->numHostChannels; ++i ) ++ { ++ bufs[i] = buffer; ++ buffer += bufsize; ++ } ++ res = snd_pcm_writen( self->pcm, bufs, numFrames ); ++ } ++ } ++ ++ if( self->canMmap ) ++ res = snd_pcm_mmap_commit( self->pcm, self->offset, numFrames ); ++ else ++ { ++ free( self->nonMmapBuffer ); ++ self->nonMmapBuffer = NULL; ++ } ++ + if( res == -EPIPE || res == -ESTRPIPE ) + { + *xrun = 1; +@@ -2611,7 +2651,7 @@ + if( self->hostInterleaved ) + { + int swidth = snd_pcm_format_size( self->nativeFormat, 1 ); +- unsigned char *buffer = ExtractAddress( self->channelAreas, self->offset ); ++ unsigned char *buffer = self->canMmap ? ExtractAddress( self->channelAreas, self->offset ) : self->nonMmapBuffer; + + /* Start after the last user channel */ + p = buffer + self->numUserChannels * swidth; +@@ -2991,13 +3031,23 @@ + goto end; + } + +- ENSURE_( snd_pcm_mmap_begin( self->pcm, &areas, &self->offset, numFrames ), paUnanticipatedHostError ); ++ if( self->canMmap ) ++ { ++ ENSURE_( snd_pcm_mmap_begin( self->pcm, &areas, &self->offset, numFrames ), paUnanticipatedHostError ); ++ /* @concern ChannelAdaption Buffer address is recorded so we can do some channel adaption later */ ++ self->channelAreas = (snd_pcm_channel_area_t *)areas; ++ } ++ else ++ { ++ free( self->nonMmapBuffer ); ++ self->nonMmapBuffer = calloc( self->numHostChannels, snd_pcm_format_size( self->nativeFormat, self->framesPerBuffer + 1 ) ); ++ } + + if( self->hostInterleaved ) + { + int swidth = snd_pcm_format_size( self->nativeFormat, 1 ); + +- p = buffer = ExtractAddress( areas, self->offset ); ++ p = buffer = self->canMmap ? ExtractAddress( areas, self->offset ) : self->nonMmapBuffer; + for( i = 0; i < self->numUserChannels; ++i ) + { + /* We're setting the channels up to userChannels, but the stride will be hostChannels samples */ +@@ -3007,16 +3057,52 @@ + } + else + { +- for( i = 0; i < self->numUserChannels; ++i ) ++ if( self->canMmap ) ++ for( i = 0; i < self->numUserChannels; ++i ) ++ { ++ area = areas + i; ++ buffer = ExtractAddress( area, self->offset ); ++ setChannel( bp, i, buffer, 1 ); ++ } ++ else + { +- area = areas + i; +- buffer = ExtractAddress( area, self->offset ); +- setChannel( bp, i, buffer, 1 ); ++ int bufsize = snd_pcm_format_size( self->nativeFormat, self->framesPerBuffer + 1 ); ++ buffer = self->nonMmapBuffer; ++ for( i = 0; i < self->numUserChannels; ++i ) ++ { ++ setChannel( bp, i, buffer, 1 ); ++ buffer += bufsize; ++ } + } + } + +- /* @concern ChannelAdaption Buffer address is recorded so we can do some channel adaption later */ +- self->channelAreas = (snd_pcm_channel_area_t *)areas; ++ if( !self->canMmap && StreamDirection_In == self->streamDir ) ++ { ++ /* Read sound */ ++ int res; ++ if( self->hostInterleaved ) ++ res = snd_pcm_readi( self->pcm, self->nonMmapBuffer, *numFrames ); ++ else ++ { ++ void *bufs[self->numHostChannels]; ++ int bufsize = snd_pcm_format_size( self->nativeFormat, self->framesPerBuffer + 1 ); ++ unsigned char *buffer = self->nonMmapBuffer; ++ int i; ++ for( i = 0; i < self->numHostChannels; ++i ) ++ { ++ bufs[i] = buffer; ++ buffer += bufsize; ++ } ++ res = snd_pcm_readn( self->pcm, bufs, *numFrames ); ++ } ++ if( res == -EPIPE || res == -ESTRPIPE ) ++ { ++ *xrun = 1; ++ *numFrames = 0; ++ free( self->nonMmapBuffer ); ++ self->nonMmapBuffer = NULL; ++ } ++ } + + end: + error: diff --git a/audacity-1.3.7-repeat.patch b/audacity-1.3.7-repeat.patch new file mode 100644 index 0000000..2074ab1 --- /dev/null +++ b/audacity-1.3.7-repeat.patch @@ -0,0 +1,12 @@ +diff -Nur audacity-src-1.3.7-orig/src/effects/Repeat.cpp audacity-src-1.3.7/src/effects/Repeat.cpp +--- audacity-src-1.3.7-orig/src/effects/Repeat.cpp 2009-01-27 21:50:58.000000000 +0100 ++++ audacity-src-1.3.7/src/effects/Repeat.cpp 2009-02-19 15:18:42.000000000 +0100 +@@ -192,7 +192,7 @@ + void RepeatDialog::PopulateOrExchange(ShuttleGui & S) + { + wxTextValidator vld(wxFILTER_INCLUDE_CHAR_LIST); +- vld.SetIncludes(wxArrayString(12, numbers)); ++ vld.SetIncludes(wxArrayString(10, numbers)); + + S.StartHorizontalLay(wxCENTER, false); + { diff --git a/audacity-1.3.7-vamp-1.3.patch b/audacity-1.3.7-vamp-1.3.patch new file mode 100644 index 0000000..185a936 --- /dev/null +++ b/audacity-1.3.7-vamp-1.3.patch @@ -0,0 +1,97 @@ +diff -Nur audacity-src-1.3.7-orig/configure audacity-src-1.3.7/configure +--- audacity-src-1.3.7-orig/configure 2009-01-27 21:50:59.000000000 +0100 ++++ audacity-src-1.3.7/configure 2009-02-28 16:06:02.000000000 +0100 +@@ -7774,12 +7774,12 @@ + pkg_cv_VAMP_CFLAGS="$VAMP_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ +- { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"vamp-hostsdk >= 2.0\"") >&5 +- ($PKG_CONFIG --exists --print-errors "vamp-hostsdk >= 2.0") 2>&5 ++ { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"vamp-hostsdk >= 1.1.0\"") >&5 ++ ($PKG_CONFIG --exists --print-errors "vamp-hostsdk >= 1.1.0") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then +- pkg_cv_VAMP_CFLAGS=`$PKG_CONFIG --cflags "vamp-hostsdk >= 2.0" 2>/dev/null` ++ pkg_cv_VAMP_CFLAGS=`$PKG_CONFIG --cflags "vamp-hostsdk >= 1.1.0" 2>/dev/null` + else + pkg_failed=yes + fi +@@ -7790,12 +7790,12 @@ + pkg_cv_VAMP_LIBS="$VAMP_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ +- { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"vamp-hostsdk >= 2.0\"") >&5 +- ($PKG_CONFIG --exists --print-errors "vamp-hostsdk >= 2.0") 2>&5 ++ { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"vamp-hostsdk >= 1.1.0\"") >&5 ++ ($PKG_CONFIG --exists --print-errors "vamp-hostsdk >= 1.1.0") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then +- pkg_cv_VAMP_LIBS=`$PKG_CONFIG --libs "vamp-hostsdk >= 2.0" 2>/dev/null` ++ pkg_cv_VAMP_LIBS=`$PKG_CONFIG --libs "vamp-hostsdk >= 1.1.0" 2>/dev/null` + else + pkg_failed=yes + fi +@@ -7813,9 +7813,9 @@ + _pkg_short_errors_supported=no + fi + if test $_pkg_short_errors_supported = yes; then +- VAMP_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "vamp-hostsdk >= 2.0" 2>&1` ++ VAMP_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "vamp-hostsdk >= 1.1.0" 2>&1` + else +- VAMP_PKG_ERRORS=`$PKG_CONFIG --print-errors "vamp-hostsdk >= 2.0" 2>&1` ++ VAMP_PKG_ERRORS=`$PKG_CONFIG --print-errors "vamp-hostsdk >= 1.1.0" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$VAMP_PKG_ERRORS" >&5 +diff -Nur audacity-src-1.3.7-orig/src/effects/vamp/VampEffect.cpp audacity-src-1.3.7/src/effects/vamp/VampEffect.cpp +--- audacity-src-1.3.7-orig/src/effects/vamp/VampEffect.cpp 2009-01-27 21:50:58.000000000 +0100 ++++ audacity-src-1.3.7/src/effects/vamp/VampEffect.cpp 2009-02-28 15:45:52.000000000 +0100 +@@ -13,9 +13,9 @@ + + #include "VampEffect.h" + +-#include +-#include +-#include ++#include ++#include ++#include + + #include + #include +@@ -311,20 +311,12 @@ + Vamp::RealTime ftime0 = fli->timestamp; + double ltime0 = ftime0.sec + (double(ftime0.nsec) / 1000000000.0); + +- Vamp::RealTime ftime1 = ftime0; +- if (fli->hasDuration) ftime1 = ftime0 + fli->duration; +- double ltime1 = ftime1.sec + (double(ftime1.nsec) / 1000000000.0); +- + wxString label = LAT1CTOWX(fli->label.c_str()); + if (label == wxString()) { +- if (fli->values.empty()) { + label = wxString::Format(LAT1CTOWX("%.3f"), ltime0); +- } else { +- label = wxString::Format(LAT1CTOWX("%.3f"), *fli->values.begin()); +- } + } + +- ltrack->AddLabel(ltime0, ltime1, label); ++ ltrack->AddLabel(ltime0, ltime0, label); + } + } + +diff -Nur audacity-src-1.3.7-orig/src/effects/vamp/VampEffect.h audacity-src-1.3.7/src/effects/vamp/VampEffect.h +--- audacity-src-1.3.7-orig/src/effects/vamp/VampEffect.h 2009-01-27 21:50:58.000000000 +0100 ++++ audacity-src-1.3.7/src/effects/vamp/VampEffect.h 2009-02-28 15:45:52.000000000 +0100 +@@ -22,7 +22,7 @@ + + #include + +-#include ++#include + + void LoadVampPlugins(); + diff --git a/audacity.spec b/audacity.spec index 58cea1f..f6a5617 100644 --- a/audacity.spec +++ b/audacity.spec @@ -1,24 +1,26 @@ # Compile options: # --with mp3 : enable mp3 support -%define tartopdir audacity-src-1.3.5-beta +%define tartopdir audacity-src-1.3.7 Name: audacity -Version: 1.3.5 -Release: 0.8.beta%{?dist} +Version: 1.3.7 +Release: 0.4.beta%{?dist} Summary: Multitrack audio editor Group: Applications/Multimedia License: GPLv2 URL: http://audacity.sourceforge.net -Source0: http://downloads.sf.net/sourceforge/audacity/audacity-src-1.3.5.tar.bz2 +Source0: http://downloads.sf.net/sourceforge/audacity/audacity-minsrc-1.3.7.tar.bz2 Source1: audacity.png Source2: audacity.desktop -Patch1: audacity-1.3.4-libmp3lame-default.patch -Patch2: audacity-1.3.5-libdir.patch -Patch3: audacity-1.3.5-fr.patch -Patch4: audacity-1.3.5-flac-import.patch +Patch1: audacity-1.3.7-libmp3lame-default.patch +Patch2: audacity-1.3.7-libdir.patch +Patch3: audacity-1.3.6-flac-import.patch +Patch4: audacity-1.3.7-portaudio-non-mmap-alsa.patch +Patch5: audacity-1.3.7-repeat.patch +Patch6: audacity-1.3.7-vamp-1.3.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: alsa-lib-devel @@ -37,17 +39,17 @@ BuildRequires: soundtouch-devel BuildRequires: vamp-plugin-sdk-devel BuildRequires: zip BuildRequires: zlib-devel -BuildRequires: wxGTK2-devel +BuildRequires: wxGTK-devel %{?_with_mp3:BuildRequires: libmad-devel} %description Audacity is a cross-platform multitrack audio editor. It allows you to -record sounds directly or to import Ogg, WAV, AIFF, AU, IRCAM, or MP3 -files. It features a few simple effects, all of the editing features -you should need, and unlimited undo. The GUI was built with wxWindows -and the audio I/O currently uses OSS under Linux. Audacity runs on -Linux/*BSD, MacOS, and Windows. +record sounds directly or to import files in various formats. It features +a few simple effects, all of the editing features you should need, and +unlimited undo. The GUI was built with wxWidgets and the audio I/O +supports OSS and ALSA under Linux. + %prep %setup -q -n %{tartopdir} @@ -55,15 +57,17 @@ Linux/*BSD, MacOS, and Windows. # Substitute hardcoded library paths. %patch1 -p1 %patch2 -p1 -for i in src/effects/ladspa/LoadLadspa.cpp src/export/ExportMP3.cpp src/AudacityApp.cpp +for i in src/effects/ladspa/LoadLadspa.cpp src/AudacityApp.cpp do sed -i -e 's!__RPM_LIBDIR__!%{_libdir}!g' $i sed -i -e 's!__RPM_LIB__!%{_lib}!g' $i done grep -q -s __RPM_LIB * -R && exit 1 -%patch3 -p1 -b .fr -%patch4 -p1 -b .dumb-flac-import +%patch3 -p1 -b .dumb-flac-import +%patch4 -p1 -b .pa-non-mmap-alsa +%patch5 -p1 -b .repeat +%patch6 -p1 -b .vamp-1.3 # Substitute occurences of "libmp3lame.so" with "libmp3lame.so.0". for i in locale/*.po src/export/ExportMP3.cpp @@ -84,6 +88,7 @@ done --with-id3tag=system \ --with-expat=system \ --with-soundtouch=system \ + --without-ffmpeg \ %{?_with_mp3:--with-libmad=system} # _smp_mflags cause problems make @@ -134,9 +139,32 @@ update-desktop-database &> /dev/null || : %changelog -* Sat Jan 17 2009 Michael Schwendt - 1.3.5-0.8.beta -- build this for F-9 for the broken dependency caused by the - changed SONAME in vamp-plugin-sdk-1.3-2.fc9 +* Sat Feb 28 2009 Kevin Kofler - 1.3.7-0.4.beta +- remove no longer needed default hostapi hunk of the non-mmap-alsa patch + +* Sat Feb 28 2009 Michael Schwendt - 1.3.7-0.3.beta +- F-10/F-9 only: patch to build with older Vamp API 1.3 +- sync with Rawhide: +- upgrade to 1.3.7-beta pkg from test branch in Fedora cvs + +* Mon Feb 23 2009 Fedora Release Engineering - 1.3.5-0.13.beta +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Mon Feb 2 2009 Michael Schwendt - 1.3.5-0.12.beta +- buildrequire >= 2.0 of Vamp SDK (because we adjust the include paths + and to avoid that the unpatched local copy is used if system version + is too old) + +* Fri Jan 2 2009 David Timms - 1.3.5-0.11.beta +- add PortAudio non mmap alsa patch (Kevin Kofler) bz 445644 + allows record and playback through pulseaudio + +* Wed Dec 17 2008 Michael Schwendt - 1.3.5-0.10.beta +- patch include paths for changes in new vamp-plugin-sdk-devel + +* Wed Dec 17 2008 Michael Schwendt - 1.3.5-0.9.beta +- rebuild in Rawhide for new SONAME in vamp-plugin-sdk +- BR wxGTK-devel for rename of wxGTK2-devel * Tue Nov 4 2008 Michael Schwendt - 1.3.5-0.8.beta - insert a guard in ImportFLAC next to the import assertion diff --git a/sources b/sources index e64e3f3..cb9f13a 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -b15503c331e7145942fa0e4b27760d61 audacity-src-1.3.5.tar.bz2 +7dcbcd8ed417413fd824d446001058d9 audacity-minsrc-1.3.7.tar.bz2