SHA256
1
0
forked from pool/audacity
OBS User unknown 2009-07-28 23:37:30 +00:00 committed by Git OBS Bridge
parent fc6d746dce
commit d33f4fbca3
17 changed files with 108 additions and 1760 deletions

View File

@ -1,77 +0,0 @@
diff -Nur audacity-src-1.3.7-orig/src/prefs/AudioIOPrefs.cpp audacity-src-1.3.7/src/prefs/AudioIOPrefs.cpp
--- audacity-src-1.3.7-orig/src/prefs/AudioIOPrefs.cpp 2009-01-27 21:50:58.000000000 +0100
+++ audacity-src-1.3.7/src/prefs/AudioIOPrefs.cpp 2009-03-02 17:25:17.000000000 +0100
@@ -71,6 +71,25 @@
wxString Name;
wxString Label;
+ mDefaultPlayDeviceName = gPrefs->Read(wxT("/AudioIO/PlaybackDevice"), wxT(""));
+ int playDeviceNum = -1; // use device name from gPrefs
+ if ( mDefaultPlayDeviceName == wxT("") ) {
+#if USE_PORTAUDIO_V19
+ playDeviceNum = Pa_GetDefaultOutputDevice();
+#else
+ playDeviceNum = Pa_GetDefaultOutputDeviceID();
+#endif
+ }
+ mDefaultRecDeviceName = gPrefs->Read(wxT("/AudioIO/RecordingDevice"), wxT(""));
+ int recDeviceNum = -1; // use device name from gPrefs
+ if ( mDefaultRecDeviceName == wxT("") ) {
+#if USE_PORTAUDIO_V19
+ recDeviceNum = Pa_GetDefaultInputDevice();
+#else
+ recDeviceNum = Pa_GetDefaultInputDeviceID();
+#endif
+ }
+
#if USE_PORTAUDIO_V19
int nDevices = Pa_GetDeviceCount();
#else
@@ -85,10 +104,16 @@
if (info->maxOutputChannels > 0) {
mmPlayNames.Add( Name );
mmPlayLabels.Add( Label );
+ if ( playDeviceNum == j ) {
+ mDefaultPlayDeviceName = Name;
+ }
}
if (info->maxInputChannels > 0) {
mmRecordNames.Add( Name );
mmRecordLabels.Add( Label );
+ if ( recDeviceNum == j ) {
+ mDefaultRecDeviceName = Name;
+ }
// if (info->maxInputChannels > numChannels)
// numChannels = info->maxInputChannels;
}
@@ -121,7 +146,7 @@
S.StartMultiColumn(2, wxEXPAND);
S.SetStretchyCol(1);
mPlay = S.TieChoice( _("Device") + wxString(wxT(":")), wxT("PlaybackDevice"),
- wxT(""), mmPlayNames, mmPlayLabels );
+ mDefaultPlayDeviceName, mmPlayNames, mmPlayLabels );
S.AddPrompt( _("Using:") );
wxString ver = _("Portaudio v");
@@ -139,7 +164,7 @@
S.StartMultiColumn(2, wxEXPAND);
S.SetStretchyCol(1);
mRec = S.TieChoice( _("Device") + wxString(wxT(":")), wxT("RecordingDevice"),
- wxT(""), mmRecordNames, mmRecordLabels );
+ mDefaultRecDeviceName, mmRecordNames, mmRecordLabels );
S.TieChoice( _("Channels") + wxString(wxT(":")), wxT("RecordChannels"),
2, mmChannelNames, mmChannelLabels );
S.EndMultiColumn();
diff -Nur audacity-src-1.3.7-orig/src/prefs/AudioIOPrefs.h audacity-src-1.3.7/src/prefs/AudioIOPrefs.h
--- audacity-src-1.3.7-orig/src/prefs/AudioIOPrefs.h 2009-01-27 21:50:58.000000000 +0100
+++ audacity-src-1.3.7/src/prefs/AudioIOPrefs.h 2009-03-02 17:25:16.000000000 +0100
@@ -48,6 +48,9 @@
wxChoice *mPlay;
wxChoice *mRec;
+
+ wxString mDefaultPlayDeviceName;
+ wxString mDefaultRecDeviceName;
};
#endif

View File

@ -1,22 +0,0 @@
--- src/audacity.desktop
+++ src/audacity.desktop
@@ -1,6 +1,4 @@
[Desktop Entry]
-Encoding=UTF-8
-
Name=Audacity Sound Editor
Name[de]=Audacity Audio-Editor
Name[ru]=Audacity
@@ -11,10 +9,10 @@
Comment[de]=Audio-Dateien aufnehmen und bearbeiten
Comment[ru]=Запись и редактирование звуковых файлов
-Icon=/usr/share/audacity/audacity.xpm
+Icon=audacity
Type=Application
-Categories=Application;AudioVideo;Audio;AudioVideoEditing;
+Categories=AudioVideo;Audio;AudioVideoEditing;
Exec=audacity
StartupNotify=false

View File

@ -1,53 +0,0 @@
--- lib-src/libnyquist/xlisp/xlisp.h
+++ lib-src/libnyquist/xlisp/xlisp.h
@@ -147,14 +147,13 @@
/* Linux on Pentium */
#ifdef __linux__
-#ifdef __i386__
-#define LINUX_INTEL
-#endif
-#endif
-
-#ifdef LINUX_INTEL
+#include <endian.h>
+#if __BYTE_ORDER == __BIG_ENDIAN
+#define XL_BIG_ENDIAN
+#else
#define XL_LITTLE_ENDIAN
#endif
+#endif
/* default important definitions */
#ifndef NNODES
--- lib-src/libnyquist/sys/switches.h
+++ lib-src/libnyquist/sys/switches.h
@@ -22,12 +22,13 @@
#define READLINE 1
-#if i386
-#define XL_LITTLE_ENDIAN 1
-#elif __i386__
-#define XL_LITTLE_ENDIAN 1
-#else
+#if !defined(XL_BIG_ENDIAN) && !defined(XL_LITTLE_ENDIAN)
+#include <endian.h>
+#if __BYTE_ORDER == __BIG_ENDIAN
#define XL_BIG_ENDIAN 1
+#else
+#define XL_LITTLE_ENDIAN 1
+#endif
#endif
#undef USE_RAND
--- lib-src/libnyquist/snd/sndlinux.c
+++ lib-src/libnyquist/snd/sndlinux.c
@@ -1,6 +1,7 @@
#include <fcntl.h>
#include <stdio.h>
#include <sys/stat.h>
+#include <unistd.h>
#include "snd.h"
#include "sndfileio.h"

View File

@ -1,44 +0,0 @@
--- src/TrackArtist.cpp
+++ src/TrackArtist.cpp
@@ -374,7 +374,7 @@
dc->SetBrush(blackKeyBrush);
int fontSize = 10;
-#ifdef __WXMSW__
+#if defined(__WXMSW__) || defined(__WXGTK__) || defined(__WXGTK20__)
fontSize = 8;
#endif
--- src/TrackPanel.cpp
+++ src/TrackPanel.cpp
@@ -266,7 +266,7 @@
void SetLabelFont(wxDC * dc)
{
int fontSize = 10;
-#if defined __WXMSW__ || __WXGTK__
+#if defined(__WXMSW__) || defined(__WXGTK__) || defined(__WXGTK20__)
fontSize = 8;
#endif
--- src/widgets/ASlider.cpp
+++ src/widgets/ASlider.cpp
@@ -42,7 +42,7 @@
#include <iostream>
-#if defined __WXMSW__
+#if defined __WXMSW__ || defined(__WXGTK__) || defined(__WXGTK20__)
const int sliderFontSize = 10;
#else
const int sliderFontSize = 12;
--- src/widgets/Ruler.cpp
+++ src/widgets/Ruler.cpp
@@ -42,7 +42,7 @@
// often.
int fontSize = 10;
-#ifdef __WXMSW__
+#if defined(__WXMSW__) || defined(__WXGTK__) || defined(__WXGTK20__)
fontSize = 8;
#endif

View File

@ -1,14 +0,0 @@
--- src/widgets/ErrorDialog.cpp
+++ src/widgets/ErrorDialog.cpp
@@ -122,0 +123,8 @@
+// make help dialog modal
+class HtmlTextHelpDialog : public BrowserFrame
+{
+public:
+ HtmlTextHelpDialog() : BrowserFrame() { MakeModal(true); }
+ ~HtmlTextHelpDialog() { MakeModal(false); }
+};
+
@@ -127 +135 @@
- BrowserFrame * pWnd = new BrowserFrame();
+ HtmlTextHelpDialog * pWnd = new HtmlTextHelpDialog();

View File

@ -1,369 +0,0 @@
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 <joshua@haberman.com>
* Copyright (c) 2005-2007 Arve Knudsen <aknuds-1@broadpark.no>
+ * Copyright (c) 2008 Kevin Kofler <kevin.kofler@chello.at>
*
* 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:

View File

@ -1,11 +0,0 @@
--- lib-src/libnyquist/nyx/nyx.c
+++ lib-src/libnyquist/nyx/nyx.c
@@ -425,7 +425,7 @@
int success = FALSE;
if (nyx_get_type(nyx_result) != nyx_audio)
- return;
+ return FALSE;
num_channels = nyx_get_audio_num_channels();
snds = (sound_type *)malloc(num_channels * sizeof(sound_type));

View File

@ -1,20 +0,0 @@
--- src/AudacityApp.cpp
+++ src/AudacityApp.cpp
@@ -1022,7 +1020,7 @@
wxString presets = wxT("");
#ifdef __WXGTK__
- if (presetsFromPrefs.GetChar(0) != wxT('/'))
+ if (presetsFromPrefs.Length() > 0 && presetsFromPrefs[0] != wxT('/'))
presetsFromPrefs = wxT("");
#endif //__WXGTK__
@@ -1074,7 +1072,7 @@
wxString temp = wxT("");
#ifdef __WXGTK__
- if (tempFromPrefs.GetChar(0) != wxT('/'))
+ if (tempFromPrefs.Length() > 0 && tempFromPrefs[0] != wxT('/'))
tempFromPrefs = wxT("");
#endif

View File

@ -1,11 +0,0 @@
--- lib-src/libnyquist/nyqsrc/fft.c
+++ lib-src/libnyquist/nyqsrc/fft.c
@@ -177,7 +177,7 @@
temp_fft[i + len] = 0.0F;
}
/* perform the fft: */
- fftnf(1, (const int *) &len, temp_fft, temp_fft + len, 1, -1.0);
+ fftnf(1, &len, temp_fft, temp_fft + len, 1, -1.0);
setelement(result, 0, cvflonum(temp_fft[0]));
for (i = 2; i < len; i += 2) {
setelement(result, i - 1, cvflonum(temp_fft[i / 2] * 2));

View File

@ -1,803 +0,0 @@
--- src/CrossFade.cpp 2009-01-27 21:50:58.000000000 +0100
+++ src/CrossFade.cpp 2009-04-08 14:52:30.000000000 +0200
@@ -77,7 +77,7 @@
WaveClip * tmpclip = NULL;
Sequence * tmp = NULL;
- WaveClipList::Node * it;
+ WaveClipList::compatibility_iterator it;
//Go through each clip, adding it to the total in the appropriate way.
--- src/Dependencies.cpp 2009-01-27 21:50:58.000000000 +0100
+++ src/Dependencies.cpp 2009-04-08 14:50:20.00000000 +0200
@@ -52,7 +52,7 @@
while (t) {
if (t->GetKind() == Track::Wave) {
WaveTrack *waveTrack = (WaveTrack *)t;
- WaveClipList::Node* node = waveTrack->GetClipIterator();
+ WaveClipList::compatibility_iterator node = waveTrack->GetClipIterator();
while(node) {
WaveClip *clip = node->GetData();
Sequence *sequence = clip->GetSequence();
--- src/import/Import.cpp 2009-01-27 21:50:58.000000000 +0100
+++ src/import/Import.cpp 2009-04-08 14:53:21.000000000 +0200
@@ -94,7 +94,7 @@
void Importer::GetSupportedImportFormats(FormatList *formatList)
{
- ImportPluginList::Node *importPluginNode = mImportPluginList->GetFirst();
+ ImportPluginList::compatibility_iterator importPluginNode = mImportPluginList->GetFirst();
while(importPluginNode)
{
ImportPlugin *importPlugin = importPluginNode->GetData();
@@ -121,7 +121,7 @@
bool haveCompatiblePlugin = false;
- ImportPluginList::Node *importPluginNode;
+ ImportPluginList::compatibility_iterator importPluginNode;
// If user explicitly selected a filter,
// then we should try importing via corresponding plugin first
@@ -219,7 +219,7 @@
// None of our plugins can handle this file. It might be that
// Audacity supports this format, but support was not compiled in.
// If so, notify the user of this fact
- UnusableImportPluginList::Node *unusableImporterNode
+ UnusableImportPluginList::compatibility_iterator unusableImporterNode
= mUnusableImportPluginList->GetFirst();
while(unusableImporterNode)
{
--- src/Mix.cpp 2009-01-27 21:50:58.000000000 +0100
+++ src/Mix.cpp 2009-04-08 14:48:22.000000000 +0200
@@ -335,7 +335,7 @@
// Find the last sample
sampleCount last = -1;
- WaveClipList::Node* it = track->GetClipIterator();
+ WaveClipList::compatibility_iterator it = track->GetClipIterator();
while (it) {
sampleCount end = it->GetData()->GetEndSample();
if (end > last) {
--- src/ondemand/ODComputeSummaryTask.cpp 2009-01-27 21:50:58.000000000 +0100
+++ src/ondemand/ODComputeSummaryTask.cpp 2009-04-08 14:50:55.000000000 +0200
@@ -186,7 +186,7 @@
Sequence *seq;
//gather all the blockfiles that we should process in the wavetrack.
- WaveClipList::Node* node = mWaveTracks[j]->GetClipIterator();
+ WaveClipList::compatibility_iterator node = mWaveTracks[j]->GetClipIterator();
int numBlocksDone;
while(node) {
--- src/ondemand/ODDecodeTask.cpp 2009-01-27 21:50:58.000000000 +0100
+++ src/ondemand/ODDecodeTask.cpp 2009-04-08 14:51:12.000000000 +0200
@@ -113,7 +113,7 @@
Sequence *seq;
//gather all the blockfiles that we should process in the wavetrack.
- WaveClipList::Node* node = mWaveTracks[j]->GetClipIterator();
+ WaveClipList::compatibility_iterator node = mWaveTracks[j]->GetClipIterator();
int numBlocksDone;
while(node) {
--- src/Project.cpp 2009-01-27 21:50:59.000000000 +0100
+++ src/Project.cpp 2009-04-08 14:53:03.000000000 +0200
@@ -923,7 +923,7 @@
if (pTrack->GetKind() == Track::Wave)
{
WaveTrack* pWaveTrack = (WaveTrack*)pTrack;
- WaveClipList::Node* node = pWaveTrack->GetClipIterator();
+ WaveClipList::compatibility_iterator node = pWaveTrack->GetClipIterator();
while (node)
{
WaveClip *clip = node->GetData();
@@ -1803,7 +1803,7 @@
l.DeleteContents(true);
wxGetApp().mImporter->GetSupportedImportFormats(&l);
- for (FormatList::Node *n = l.GetFirst(); n; n = n->GetNext()) {
+ for (FormatList::compatibility_iterator n = l.GetFirst(); n; n = n->GetNext()) {
Format *f = n->GetData();
wxString newfilter = f->formatName + wxT("|");
@@ -2141,7 +2141,7 @@
if (t->GetKind() == Track::Wave)
{
// Only wave tracks have a notion of "changed"
- for (WaveClipList::Node* it=((WaveTrack*)t)->GetClipIterator(); it; it=it->GetNext())
+ for (WaveClipList::compatibility_iterator it=((WaveTrack*)t)->GetClipIterator(); it; it=it->GetNext())
it->GetData()->MarkChanged();
}
t = iter.Next();
--- src/Snap.cpp 2009-01-27 21:50:58.000000000 +0100
+++ src/Snap.cpp 2009-04-08 14:49:15.000000000 +0200
@@ -53,7 +53,7 @@
}
if (track->GetKind() == Track::Wave) {
WaveTrack *waveTrack = (WaveTrack *)track;
- WaveClipList::Node* it;
+ WaveClipList::compatibility_iterator it;
for (it=waveTrack->GetClipIterator(); it; it=it->GetNext()) {
WaveClip *clip = it->GetData();
if (exclusions) {
--- src/TrackArtist.cpp 2009-04-07 17:18:14.000000000 +0200
+++ src/TrackArtist.cpp 2009-04-08 14:47:50.000000000 +0200
@@ -187,7 +187,7 @@
if (t->GetKind() == Track::Wave)
{
WaveTrack* wt = (WaveTrack*)t;
- for (WaveClipList::Node* it=wt->GetClipIterator(); it; it=it->GetNext())
+ for (WaveClipList::compatibility_iterator it=wt->GetClipIterator(); it; it=it->GetNext())
it->GetData()->ClearDisplayRect();
}
@@ -780,7 +780,7 @@
bool drawSamples,
bool showPoints, bool muted)
{
- for (WaveClipList::Node* it = track->GetClipIterator(); it; it = it->GetNext())
+ for (WaveClipList::compatibility_iterator it = track->GetClipIterator(); it; it = it->GetNext())
DrawIndividualClipSamples(dc, r, it->GetData(), t0, pps, h,
zoomMin, zoomMax, dB, drawSamples, showPoints, muted);
}
@@ -1222,7 +1222,7 @@
dc.SetBrush(blankBrush);
dc.DrawRectangle(r);
- for (WaveClipList::Node* it=track->GetClipIterator(); it; it=it->GetNext())
+ for (WaveClipList::compatibility_iterator it=track->GetClipIterator(); it; it=it->GetNext())
DrawClipWaveform(track, it->GetData(), dc, r, viewInfo, drawEnvelope, drawSamples,
drawSliders, dB, muted);
@@ -1600,7 +1600,7 @@
return;
}
- for (WaveClipList::Node* it=track->GetClipIterator(); it; it=it->GetNext())
+ for (WaveClipList::compatibility_iterator it=track->GetClipIterator(); it; it=it->GetNext())
DrawClipSpectrum(track, it->GetData(), dc, r, viewInfo, autocorrelation, logF);
}
--- src/Track.cpp 2009-01-27 21:50:58.000000000 +0100
+++ src/Track.cpp 2009-04-08 14:49:36.000000000 +0200
@@ -745,7 +745,7 @@
for (TrackListNode *p = head; p; p = p->next) {
if (p->t->GetKind() == Track::Wave) {
WaveTrack* track = ((WaveTrack*)p->t);
- for (WaveClipList::Node* it=track->GetClipIterator(); it; it=it->GetNext())
+ for (WaveClipList::compatibility_iterator it=track->GetClipIterator(); it; it=it->GetNext())
{
WaveClip* clip = it->GetData();
BlockArray *blocks = clip->GetSequenceBlockArray();
@@ -779,7 +779,7 @@
for (p = head; p; p = p->next) {
if (p->t->GetKind() == Track::Wave) {
WaveTrack* track = ((WaveTrack*)p->t);
- for (WaveClipList::Node* it=track->GetClipIterator(); it; it=it->GetNext())
+ for (WaveClipList::compatibility_iterator it=track->GetClipIterator(); it; it=it->GetNext())
{
WaveClip* clip = it->GetData();
BlockArray *blocks = clip->GetSequenceBlockArray();
@@ -799,7 +799,7 @@
for (p = stackElem->tracks->head; p; p = p->next) {
if (p->t->GetKind() == Track::Wave) {
WaveTrack* track = ((WaveTrack*)p->t);
- for (WaveClipList::Node* it=track->GetClipIterator(); it; it=it->GetNext())
+ for (WaveClipList::compatibility_iterator it=track->GetClipIterator(); it; it=it->GetNext())
{
WaveClip* clip = it->GetData();
BlockArray *blocks = clip->GetSequenceBlockArray();
--- src/TrackPanel.cpp 2009-04-07 17:18:14.000000000 +0200
+++ src/TrackPanel.cpp 2009-04-08 14:48:06.000000000 +0200
@@ -2862,7 +2862,7 @@
while (t) {
if (t->GetKind() == Track::Wave) {
WaveTrack *wt = (WaveTrack *)t;
- WaveClipList::Node* it;
+ WaveClipList::compatibility_iterator it;
for(it=wt->GetClipIterator(); it; it=it->GetNext()) {
WaveClip *clip = it->GetData();
clip->mSpecPxCache->valid = false;
@@ -2880,7 +2880,7 @@
while (t) {
if (t->GetKind() == Track::Wave) {
WaveTrack *wt = (WaveTrack *)t;
- WaveClipList::Node* it;
+ WaveClipList::compatibility_iterator it;
for(it=wt->GetClipIterator(); it; it=it->GetNext()) {
WaveClip *clip = it->GetData();
clip->mSpecPxCache->valid = false;
@@ -6228,7 +6228,7 @@
WaveTrack *wt = (WaveTrack *) mPopupMenuTarget;
if (wt->GetDisplay()!= id - OnWaveformID) {
- WaveClipList::Node* it;
+ WaveClipList::compatibility_iterator it;
for(it=wt->GetClipIterator(); it; it=it->GetNext()) {
WaveClip *clip = it->GetData();
clip->mSpecPxCache->valid = false;
--- src/WaveClip.cpp 2009-01-27 21:50:58.000000000 +0100
+++ src/WaveClip.cpp 2009-04-08 14:46:59.000000000 +0200
@@ -282,7 +282,7 @@
mSpecCache = new SpecCache(1, 1, false);
mSpecPxCache = new SpecPxCache(1);
- for (WaveClipList::Node* it=orig.mCutLines.GetFirst(); it; it=it->GetNext())
+ for (WaveClipList::compatibility_iterator it=orig.mCutLines.GetFirst(); it; it=it->GetNext())
mCutLines.Append(new WaveClip(*it->GetData(), projDirManager));
mAppendBuffer = NULL;
@@ -1023,7 +1023,7 @@
mSequence->WriteXML(xmlFile);
mEnvelope->WriteXML(xmlFile);
- for (WaveClipList::Node* it=mCutLines.GetFirst(); it; it=it->GetNext())
+ for (WaveClipList::compatibility_iterator it=mCutLines.GetFirst(); it; it=it->GetNext())
it->GetData()->WriteXML(xmlFile);
xmlFile.EndTag(wxT("waveclip"));
@@ -1088,7 +1088,7 @@
OffsetCutLines(t0, other->GetEndTime()-other->GetStartTime());
// Paste cut lines contained in pasted clip
- for (WaveClipList::Node* it=other->mCutLines.GetFirst(); it; it=it->GetNext())
+ for (WaveClipList::compatibility_iterator it=other->mCutLines.GetFirst(); it; it=it->GetNext())
{
WaveClip* cutline = it->GetData();
WaveClip* newCutLine = new WaveClip(*cutline,
@@ -1155,9 +1155,9 @@
if (clip_t1 > GetEndTime())
clip_t1 = GetEndTime();
- WaveClipList::Node* nextIt = (WaveClipList::Node*)-1;
+ WaveClipList::compatibility_iterator nextIt;// = (WaveClipList::compatibility_iterator)-1;
- for (WaveClipList::Node* it = mCutLines.GetFirst(); it; it=nextIt)
+ for (WaveClipList::compatibility_iterator it = mCutLines.GetFirst(); it; it=nextIt)
{
nextIt = it->GetNext();
WaveClip* clip = it->GetData();
@@ -1206,9 +1206,9 @@
newClip->SetOffset(clip_t0-mOffset);
// Sort out cutlines that belong to the new cutline
- WaveClipList::Node* nextIt = (WaveClipList::Node*)-1;
+ WaveClipList::compatibility_iterator nextIt;// = (WaveClipList::compatibility_iterator)-1;
- for (WaveClipList::Node* it = mCutLines.GetFirst(); it; it=nextIt)
+ for (WaveClipList::compatibility_iterator it = mCutLines.GetFirst(); it; it=nextIt)
{
nextIt = it->GetNext();
WaveClip* clip = it->GetData();
@@ -1253,7 +1253,7 @@
double* cutlineStart /* = NULL */,
double* cutlineEnd /* = NULL */)
{
- for (WaveClipList::Node* it = mCutLines.GetFirst(); it; it=it->GetNext())
+ for (WaveClipList::compatibility_iterator it = mCutLines.GetFirst(); it; it=it->GetNext())
{
WaveClip* cutline = it->GetData();
if (fabs(mOffset + cutline->GetOffset() - cutLinePosition) < 0.0001)
@@ -1271,7 +1271,7 @@
bool WaveClip::ExpandCutLine(double cutLinePosition)
{
- for (WaveClipList::Node* it = mCutLines.GetFirst(); it; it=it->GetNext())
+ for (WaveClipList::compatibility_iterator it = mCutLines.GetFirst(); it; it=it->GetNext())
{
WaveClip* cutline = it->GetData();
if (fabs(mOffset + cutline->GetOffset() - cutLinePosition) < 0.0001)
@@ -1289,7 +1289,7 @@
bool WaveClip::RemoveCutLine(double cutLinePosition)
{
- for (WaveClipList::Node* it = mCutLines.GetFirst(); it; it=it->GetNext())
+ for (WaveClipList::compatibility_iterator it = mCutLines.GetFirst(); it; it=it->GetNext())
{
if (fabs(mOffset + it->GetData()->GetOffset() - cutLinePosition) < 0.0001)
{
@@ -1306,7 +1306,7 @@
{
while (!mCutLines.IsEmpty())
{
- WaveClipList::Node* head = mCutLines.GetFirst();
+ WaveClipList::compatibility_iterator head = mCutLines.GetFirst();
delete head->GetData();
mCutLines.DeleteNode(head);
}
@@ -1314,7 +1314,7 @@
void WaveClip::OffsetCutLines(double t0, double len)
{
- for (WaveClipList::Node* it = mCutLines.GetFirst(); it; it=it->GetNext())
+ for (WaveClipList::compatibility_iterator it = mCutLines.GetFirst(); it; it=it->GetNext())
{
WaveClip* cutLine = it->GetData();
if (mOffset + cutLine->GetOffset() >= t0)
@@ -1325,21 +1325,21 @@
void WaveClip::Lock()
{
GetSequence()->Lock();
- for (WaveClipList::Node* it = mCutLines.GetFirst(); it; it=it->GetNext())
+ for (WaveClipList::compatibility_iterator it = mCutLines.GetFirst(); it; it=it->GetNext())
it->GetData()->Lock();
}
void WaveClip::CloseLock()
{
GetSequence()->CloseLock();
- for (WaveClipList::Node* it = mCutLines.GetFirst(); it; it=it->GetNext())
+ for (WaveClipList::compatibility_iterator it = mCutLines.GetFirst(); it; it=it->GetNext())
it->GetData()->Lock();
}
void WaveClip::Unlock()
{
GetSequence()->Unlock();
- for (WaveClipList::Node* it = mCutLines.GetFirst(); it; it=it->GetNext())
+ for (WaveClipList::compatibility_iterator it = mCutLines.GetFirst(); it; it=it->GetNext())
it->GetData()->Unlock();
}
--- src/WaveTrack.cpp 2009-01-27 21:50:58.000000000 +0100
+++ src/WaveTrack.cpp 2009-04-08 14:52:03.000000000 +0200
@@ -108,7 +108,7 @@
Init(orig);
- for (WaveClipList::Node *node = orig.mClips.GetFirst(); node; node = node->GetNext())
+ for (WaveClipList::compatibility_iterator node = orig.mClips.GetFirst(); node; node = node->GetNext())
mClips.Append(new WaveClip(*node->GetData(), mDirManager));
}
@@ -147,7 +147,7 @@
ODManager::Instance()->RemoveWaveTrack(this);
#endif
- for (WaveClipList::Node* it=GetClipIterator(); it; it=it->GetNext())
+ for (WaveClipList::compatibility_iterator it=GetClipIterator(); it; it=it->GetNext())
delete it->GetData();
mClips.Clear();
if (mDisplayLocations)
@@ -164,7 +164,7 @@
{
double delta = o - GetOffset();
- for (WaveClipList::Node* it=GetClipIterator(); it; it=it->GetNext())
+ for (WaveClipList::compatibility_iterator it=GetClipIterator(); it; it=it->GetNext())
{
WaveClip* clip = it->GetData();
clip->SetOffset(clip->GetOffset() + delta);
@@ -198,7 +198,7 @@
void WaveTrack::SetRate(double newRate)
{
mRate = (int) newRate;
- for (WaveClipList::Node* it=GetClipIterator(); it; it=it->GetNext())
+ for (WaveClipList it=GetClipIterator(); it; it=it->GetNext())
it->GetData()->SetRate((int) newRate);
}
@@ -245,7 +245,7 @@
bool WaveTrack::ConvertToSampleFormat(sampleFormat format)
{
- for (WaveClipList::Node* it=GetClipIterator(); it; it=it->GetNext())
+ for (WaveClipList::compatibility_iterator it=GetClipIterator(); it; it=it->GetNext())
it->GetData()->ConvertToSampleFormat(format);
mFormat = format;
@@ -254,7 +254,7 @@
bool WaveTrack::IsEmpty(double t0, double t1)
{
- WaveClipList::Node* it;
+ WaveClipList::compatibility_iterator it;
//printf("Searching for overlap in %.6f...%.6f\n", t0, t1);
for (it=GetClipIterator(); it; it=it->GetNext())
@@ -321,7 +321,7 @@
// the left selection t0.
double firstGreaterOffset = -1;
- WaveClipList::Node * it;
+ WaveClipList::compatibility_iterator it;
for(it = GetClipIterator(); it; it = it->GetNext())
{
@@ -382,7 +382,7 @@
newTrack->Init(*this);
- WaveClipList::Node* it;
+ WaveClipList::compatibility_iterator it;
for (it=GetClipIterator(); it; it=it->GetNext())
{
@@ -496,7 +496,7 @@
//printf("paste: we have at least one clip\n");
double insertDuration = other->GetEndTime();
- WaveClipList::Node* it;
+ WaveClipList::compatibility_iterator it;
#ifdef EXPERIMENTAL_STICKY_TRACKS
if (mStickyLabelTrack) mStickyLabelTrack->ShiftLabelsOnInsert(insertDuration, t0);
@@ -741,7 +741,7 @@
bool editClipCanMove = true;
gPrefs->Read(wxT("/GUI/EditClipCanMove"), &editClipCanMove);
- WaveClipList::Node* it;
+ WaveClipList::compatibility_iterator it;
WaveClipList clipsToDelete;
WaveClipList clipsToAdd;
@@ -956,7 +956,7 @@
//printf("paste: we have at least one clip\n");
double insertDuration = other->GetEndTime();
- WaveClipList::Node* it;
+ WaveClipList::compatibility_iterator it;
#ifdef EXPERIMENTAL_STICKY_TRACKS
if (mStickyLabelTrack) mStickyLabelTrack->ShiftLabelsOnInsert(insertDuration, t0);
@@ -1100,7 +1100,7 @@
sampleCount len = (sampleCount)floor(t1 * mRate + 0.5) - start;
bool result = true;
- for (WaveClipList::Node* it=GetClipIterator(); it; it=it->GetNext())
+ for (WaveClipList::compatibility_iterator it=GetClipIterator(); it; it=it->GetNext())
{
WaveClip *clip = it->GetData();
@@ -1146,7 +1146,7 @@
return clip->InsertSilence(0, len);
}
- for (WaveClipList::Node* it=GetClipIterator(); it; it=it->GetNext())
+ for (WaveClipList::compatibility_iterator it=GetClipIterator(); it; it=it->GetNext())
{
WaveClip *clip = it->GetData();
if (clip->GetStartTime() > t)
@@ -1171,7 +1171,7 @@
wxBusyCursor busy;
- for( WaveClipList::Node *it = GetClipIterator(); it; it = it->GetNext() )
+ for( WaveClipList::compatibility_iterator it = GetClipIterator(); it; it = it->GetNext() )
{
WaveClip *clip = it->GetData();
@@ -1249,7 +1249,7 @@
{
// Merge all WaveClips overlapping selection into one
- WaveClipList::Node* it;
+ WaveClipList::compatibility_iterator it;
WaveClipList clipsToDelete;
WaveClip *newClip;
@@ -1320,7 +1320,7 @@
{
sampleCount bestBlockSize = GetMaxBlockSize();
- for (WaveClipList::Node* it=GetClipIterator(); it; it=it->GetNext())
+ for (WaveClipList::compatibility_iterator it=GetClipIterator(); it; it=it->GetNext())
{
WaveClip* clip = it->GetData();
sampleCount startSample = (sampleCount)floor(clip->GetStartTime()*mRate + 0.5);
@@ -1338,7 +1338,7 @@
sampleCount WaveTrack::GetMaxBlockSize()
{
int maxblocksize = 0;
- for (WaveClipList::Node* it=GetClipIterator(); it; it=it->GetNext())
+ for (WaveClipList::compatibility_iterator it=GetClipIterator(); it; it=it->GetNext())
{
WaveClip* clip = it->GetData();
if (clip->GetSequence()->GetMaxBlockSize() > maxblocksize)
@@ -1483,7 +1483,7 @@
xmlFile.WriteAttr(wxT("gain"), (double)mGain);
xmlFile.WriteAttr(wxT("pan"), (double)mPan);
- for (WaveClipList::Node* it=GetClipIterator(); it; it=it->GetNext())
+ for (WaveClipList::compatibility_iterator it=GetClipIterator(); it; it=it->GetNext())
{
it->GetData()->WriteXML(xmlFile);
}
@@ -1493,7 +1493,7 @@
bool WaveTrack::GetErrorOpening()
{
- for (WaveClipList::Node* it=GetClipIterator(); it; it=it->GetNext())
+ for (WaveClipList::compatibility_iterator it=GetClipIterator(); it; it=it->GetNext())
if (it->GetData()->GetSequence()->GetErrorOpening())
return true;
@@ -1502,7 +1502,7 @@
bool WaveTrack::Lock()
{
- for (WaveClipList::Node* it=GetClipIterator(); it; it=it->GetNext())
+ for (WaveClipList::compatibility_iterator it=GetClipIterator(); it; it=it->GetNext())
it->GetData()->Lock();
return true;
@@ -1510,7 +1510,7 @@
bool WaveTrack::CloseLock()
{
- for (WaveClipList::Node* it=GetClipIterator(); it; it=it->GetNext())
+ for (WaveClipList::compatibility_iterator it=GetClipIterator(); it; it=it->GetNext())
it->GetData()->CloseLock();
return true;
@@ -1519,7 +1519,7 @@
bool WaveTrack::Unlock()
{
- for (WaveClipList::Node* it=GetClipIterator(); it; it=it->GetNext())
+ for (WaveClipList::compatibility_iterator it=GetClipIterator(); it; it=it->GetNext())
it->GetData()->Unlock();
return true;
@@ -1543,7 +1543,7 @@
if (mClips.IsEmpty())
return 0;
- for (WaveClipList::Node* it=GetClipIterator(); it; it=it->GetNext())
+ for (WaveClipList::compatibility_iterator it=GetClipIterator(); it; it=it->GetNext())
if (!found)
{
found = true;
@@ -1562,7 +1562,7 @@
if (mClips.IsEmpty())
return 0;
- for (WaveClipList::Node* it=GetClipIterator(); it; it=it->GetNext())
+ for (WaveClipList::compatibility_iterator it=GetClipIterator(); it; it=it->GetNext())
if (!found)
{
found = true;
@@ -1592,7 +1592,7 @@
bool result = true;
- for (WaveClipList::Node* it=GetClipIterator(); it; it=it->GetNext())
+ for (WaveClipList::compatibility_iterator it=GetClipIterator(); it; it=it->GetNext())
{
WaveClip* clip = it->GetData();
@@ -1627,7 +1627,7 @@
double sumsq = 0.0;
sampleCount length = 0;
- for (WaveClipList::Node* it=GetClipIterator(); it; it=it->GetNext())
+ for (WaveClipList::compatibility_iterator it=GetClipIterator(); it; it=it->GetNext())
{
WaveClip* clip = it->GetData();
@@ -1655,7 +1655,7 @@
// Simple optimization: When this buffer is completely contained within one clip,
// don't clear anything (because we never won't have to). Otherwise, just clear
// everything to be on the safe side.
- WaveClipList::Node* it;
+ WaveClipList::compatibility_iterator it;
bool doClear = true;
for (it=GetClipIterator(); it; it=it->GetNext())
@@ -1709,7 +1709,7 @@
{
bool result = true;
- for (WaveClipList::Node* it=GetClipIterator(); it; it=it->GetNext())
+ for (WaveClipList::compatibility_iterator it=GetClipIterator(); it; it=it->GetNext())
{
WaveClip *clip = it->GetData();
@@ -1752,7 +1752,7 @@
double startTime = t0;
double endTime = t0+tstep*bufferLen;
- for (WaveClipList::Node* it=GetClipIterator(); it; it=it->GetNext())
+ for (WaveClipList::compatibility_iterator it=GetClipIterator(); it; it=it->GetNext())
{
WaveClip *clip = it->GetData();
@@ -1782,7 +1782,7 @@
WaveClip* WaveTrack::GetClipAtX(int xcoord)
{
- for (WaveClipList::Node* it=GetClipIterator(); it; it=it->GetNext())
+ for (WaveClipList::compatibility_iterator it=GetClipIterator(); it; it=it->GetNext())
{
wxRect r;
it->GetData()->GetDisplayRect(&r);
@@ -1805,7 +1805,7 @@
// Search for any active DragPoint on the current track
Envelope* WaveTrack::GetActiveEnvelope(void)
{
- for (WaveClipList::Node* it=GetClipIterator(); it; it=it->GetNext())
+ for (WaveClipList::compatibility_iterator it=GetClipIterator(); it; it=it->GetNext())
{
WaveClip* clip = it->GetData();
Envelope* env = clip->GetEnvelope() ;
@@ -1862,7 +1862,7 @@
void WaveTrack::MoveClipToTrack(int clipIndex, WaveTrack* dest)
{
- WaveClipList::Node* node = mClips.Item(clipIndex);
+ WaveClipList::compatibility_iterator node = mClips.Item(clipIndex);
WaveClip* clip = node->GetData();
mClips.DeleteNode(node);
dest->mClips.Append(clip);
@@ -1870,7 +1870,7 @@
void WaveTrack::MoveClipToTrack(WaveClip *clip, WaveTrack* dest)
{
- for (WaveClipList::Node* it=GetClipIterator(); it; it=it->GetNext()) {
+ for (WaveClipList::compatibility_iterator it=GetClipIterator(); it; it=it->GetNext()) {
if (it->GetData() == clip) {
WaveClip* clip = it->GetData();
mClips.DeleteNode(it);
@@ -1886,7 +1886,7 @@
if (allowedAmount)
*allowedAmount = amount;
- for (WaveClipList::Node* it=GetClipIterator(); it; it=it->GetNext())
+ for (WaveClipList::compatibility_iterator it=GetClipIterator(); it; it=it->GetNext())
{
WaveClip* c = it->GetData();
if (c != clip && c->GetStartTime() < clip->GetEndTime()+amount &&
@@ -1930,7 +1930,7 @@
bool WaveTrack::CanInsertClip(WaveClip* clip)
{
- for (WaveClipList::Node* it=GetClipIterator(); it; it=it->GetNext())
+ for (WaveClipList::compatibility_iterator it=GetClipIterator(); it; it=it->GetNext())
{
WaveClip* c = it->GetData();
if (c->GetStartTime() < clip->GetEndTime() && c->GetEndTime() > clip->GetStartTime())
@@ -1950,7 +1950,7 @@
bool WaveTrack::SplitAt(double t)
{
- for (WaveClipList::Node* it=GetClipIterator(); it; it=it->GetNext())
+ for (WaveClipList::compatibility_iterator it=GetClipIterator(); it; it=it->GetNext())
{
WaveClip* c = it->GetData();
if (t > c->GetStartTime() && t < c->GetEndTime())
@@ -2024,7 +2024,7 @@
WaveClip* clip = clips.Item(i);
WaveClipList* cutlines = clip->GetCutLines();
- for (WaveClipList::Node* it = cutlines->GetFirst(); it;
+ for (WaveClipList::compatibility_iterator it = cutlines->GetFirst(); it;
it = it->GetNext())
{
// Add cut line expander point
@@ -2062,14 +2062,14 @@
gPrefs->Read(wxT("/GUI/EditClipCanMove"), &editClipCanMove);
// Find clip which contains this cut line
- for (WaveClipList::Node* it=GetClipIterator(); it; it=it->GetNext())
+ for (WaveClipList::compatibility_iterator it=GetClipIterator(); it; it=it->GetNext())
{
WaveClip* clip = it->GetData();
double start = 0, end = 0;
if (clip->FindCutLine(cutLinePosition, &start, &end))
{
- WaveClipList::Node* it2;
+ WaveClipList::compatibility_iterator it2;
if (!editClipCanMove)
{
@@ -2120,7 +2120,7 @@
bool WaveTrack::RemoveCutLine(double cutLinePosition)
{
- for (WaveClipList::Node* it=GetClipIterator(); it; it=it->GetNext())
+ for (WaveClipList::compatibility_iterator it=GetClipIterator(); it; it=it->GetNext())
if (it->GetData()->RemoveCutLine(cutLinePosition))
return true;
@@ -2148,7 +2148,7 @@
bool WaveTrack::Resample(int rate, ProgressDialog *progress)
{
- for (WaveClipList::Node* it=GetClipIterator(); it; it=it->GetNext())
+ for (WaveClipList::compatibility_iterator it=GetClipIterator(); it; it=it->GetNext())
if (!it->GetData()->Resample(rate, progress))
{
// FIXME: The track is now in an inconsistent state since some
@@ -2173,7 +2173,7 @@
{
clips.Empty();
- for (WaveClipList::Node *it=GetClipIterator(); it; it=it->GetNext())
+ for (WaveClipList::compatibility_iterator it=GetClipIterator(); it; it=it->GetNext())
clips.Add(it->GetData());
clips.Sort(SortClipArrayCmpFunc);
@@ -2182,14 +2182,14 @@
///Deletes all clips' wavecaches. Careful, This may not be threadsafe.
void WaveTrack::DeleteWaveCaches()
{
- for (WaveClipList::Node* it=GetClipIterator(); it; it=it->GetNext())
+ for (WaveClipList::compatibility_iterator it=GetClipIterator(); it; it=it->GetNext())
it->GetData()->DeleteWaveCache();
}
///Adds an invalid region to the wavecache so it redraws that portion only.
void WaveTrack::AddInvalidRegion(sampleCount startSample, sampleCount endSample)
{
- for (WaveClipList::Node* it=GetClipIterator(); it; it=it->GetNext())
+ for (WaveClipList::compatibility_iterator it=GetClipIterator(); it; it=it->GetNext())
it->GetData()->AddInvalidRegion(startSample,endSample);
}
--- src/WaveTrack.h 2009-04-08 14:41:18.000000000 +0200
+++ src/WaveTrack.h 2009-04-08 14:45:16.000000000 +0200
@@ -242,7 +242,7 @@
// Get access to the clips in the tracks. This is used by
// track artists and also by TrackPanel when sliding...it would
// be cleaner if this could be removed, though...
- WaveClipList::Node* GetClipIterator() { return mClips.GetFirst(); }
+ WaveClipList::compatibility_iterator GetClipIterator() { return mClips.GetFirst(); }
// Create new clip and add it to this track. Returns a pointer
// to the newly created clip.
--- src/AboutDialog.cpp 2009-01-27 21:50:58.000000000 +0100
+++ src/AboutDialog.cpp 2009-04-08 15:15:38.000000000 +0200
@@ -820,7 +820,7 @@
{
wxString s;
- for (AboutDialogCreditItemsList::Node* p=creditItems.GetFirst(); p; p = p->GetNext())
+ for (AboutDialogCreditItemsList::compatibility_iterator p=creditItems.GetFirst(); p; p = p->GetNext())
{
AboutDialogCreditItem* item = p->GetData();
if (item->role == role)
--- src/BatchCommands.cpp 2009-04-08 15:27:24.000000000 +0200
+++ src/BatchCommands.cpp 2009-04-08 15:27:34.000000000 +0200
@@ -251,7 +251,7 @@
// Gets all commands that are valid for this mode.
wxArrayString BatchCommands::GetAllCommands()
{
- wxArrayString commands(true);
+ wxArrayString commands;//(true);
wxString command;
commands.Clear();
--- src/TrackPanel.cpp 2009-04-08 15:39:17.000000000 +0200
+++ src/TrackPanel.cpp 2009-04-08 15:41:09.000000000 +0200
@@ -2187,7 +2187,7 @@
if (t->GetSelected()) {
if (t->GetKind() == Track::Wave) {
WaveTrack *wt = (WaveTrack *)t;
- WaveClipList::Node* it;
+ WaveClipList::compatibility_iterator it;
for(it=wt->GetClipIterator(); it; it=it->GetNext()) {
WaveClip *clip = it->GetData();
double clip0 = clip->GetStartTime();
@@ -6324,7 +6324,7 @@
wxMenuItem * item;
int id;
- for ( wxwxMenuItemListNode * node = list.GetFirst(); node; node = node->GetNext() )
+ for ( wxMenuItemList::compatibility_iterator node = list.GetFirst(); node; node = node->GetNext() )
{
item = node->GetData();
id = item->GetId();
--- src/WaveTrack.cpp
+++ src/WaveTrack.cpp
@@ -198,7 +198,7 @@
void WaveTrack::SetRate(double newRate)
{
mRate = (int) newRate;
- for (WaveClipList it=GetClipIterator(); it; it=it->GetNext())
+ for (WaveClipList::compatibility_iterator it=GetClipIterator(); it; it=it->GetNext())
it->GetData()->SetRate((int) newRate);
}

View File

@ -0,0 +1,43 @@
diff -Nur audacity-src-1.3.8-orig/src/prefs/DevicePrefs.cpp audacity-src-1.3.8/src/prefs/DevicePrefs.cpp
--- audacity-src-1.3.8-orig/src/prefs/DevicePrefs.cpp 2009-07-16 05:27:35.000000000 +0200
+++ audacity-src-1.3.8/src/prefs/DevicePrefs.cpp 2009-07-20 20:55:26.000000000 +0200
@@ -172,6 +172,15 @@
wxArrayString playnames;
wxArrayString recordnames;
+ int playDeviceNum = -1; // use device name from gPrefs
+ if ( mPlayDevice == wxT("") ) {
+ playDeviceNum = Pa_GetDefaultOutputDevice();
+ }
+ int recDeviceNum = -1; // use device name from gPrefs
+ if ( mRecordDevice == wxT("") ) {
+ recDeviceNum = Pa_GetDefaultInputDevice();
+ }
+
for (int i = 0; i < nDevices; i++) {
const PaDeviceInfo *info = Pa_GetDeviceInfo(i);
if (info->hostApi == index) {
@@ -182,7 +191,10 @@
if (info->maxOutputChannels > 0) {
playnames.Add(name);
index = mPlay->Append(name, (void *) info);
- if (device == mPlayDevice) {
+ if (playDeviceNum == i) {
+ mPlay->SetSelection(index);
+ }
+ else if (device == mPlayDevice) {
mPlay->SetSelection(index);
}
}
@@ -190,7 +202,10 @@
if (info->maxInputChannels > 0) {
recordnames.Add(name);
index = mRecord->Append(name, (void *) info);
- if (device == mRecordDevice) {
+ if (recDeviceNum == i) {
+ mRecord->SetSelection(index);
+ }
+ else if (device == mRecordDevice) {
mRecord->SetSelection(index);
}
}

View File

@ -0,0 +1,14 @@
diff -Nur audacity-src-1.3.8-orig/src/AudacityApp.cpp audacity-src-1.3.8/src/AudacityApp.cpp
--- audacity-src-1.3.8-orig/src/AudacityApp.cpp 2009-07-16 05:27:35.000000000 +0200
+++ audacity-src-1.3.8/src/AudacityApp.cpp 2009-07-20 23:45:41.000000000 +0200
@@ -331,7 +331,9 @@
///////////////////////////////////////////////////////////////////////////////
#include <dlfcn.h>
-#include <gtk/gtk.h>
+/*#include <gtk/gtk.h>*/
+#include <glib/gtypes.h>
+#include <glib-object.h>
typedef struct _GnomeProgram GnomeProgram;
typedef struct _GnomeModuleInfo GnomeModuleInfo;

View File

@ -1,5 +1,5 @@
--- lib-src/libnyquist/xlisp/xlbfun.c
+++ lib-src/libnyquist/xlisp/xlbfun.c
--- lib-src/libnyquist/nyquist/xlisp/xlbfun.c
+++ lib-src/libnyquist/nyquist/xlisp/xlbfun.c
@@ -603,6 +603,7 @@
{
xllastarg();
@ -24,8 +24,8 @@
}
/* xevalhook - eval hook function */
--- lib-src/libnyquist/xlisp/xlread.c
+++ lib-src/libnyquist/xlisp/xlread.c
--- lib-src/libnyquist/nyquist/xlisp/xlread.c
+++ lib-src/libnyquist/nyquist/xlisp/xlread.c
@@ -240,6 +240,8 @@
/* handle illegal characters */
else

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:e0044916ffe0d6d8f9227fc1e3d973e11b37edd89005a110ebff482ef301d4d5
size 5386329

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:50132fead4de4382e603fa14f0a7ffe87c4db86ddcfda1a472b8fa0dc7fb41cf
size 6734200

View File

@ -1,3 +1,34 @@
-------------------------------------------------------------------
Thu Jul 23 11:02:54 CEST 2009 - mseben@suse.cz
- update to 1.3.8 see full changelog : http://audacity.sourceforge.net/download/features-1.3-a
Effects and Analysis:
* VST Effects now display GUI by default
* Faster Equalization and Noise Removal;
* Chains applied to files now clear temporary data after processing each file
* Updated Nyquist implementation with support for SAL syntax and improved memory management
* Plot Spectrum now analyzes up to 237.8 seconds of audio, with separate windows
for each project and improved display; new preferences for Spectrograms
* Contrast Analysis tool now modeless for easier use
Interface:
* Draft Manual/Quick Help included in Windows and Mac installers
* New "Mixer Board" view with per-track VU meters
* Mute, solo, gain, pan and track height saved in projects
* More compact Preferences window with easier-to-use Keyboard tab and new toolbars shortcuts
* New Screenshot Tools and improved screen reader support
Other:
* Record more than 16 channels (hardware/drivers permitting)
* Improved support for non-mmap ALSA devices such as PulseAudio
* 32-bit float data over 0 dB now handled without clipping
* "Stop" option when importing preserves already imported data
* AMR NB export now supported if the optional FFmpeg library is installed
* Faster waveform drawing and better response in multi-track projects
- obsolete : return_non_void.patch,endian-fix.patch,font-fix.patch,
strict-aliasing.patch,wxGTK_with_stl.patch,modal-help-dialog.patch,
desktop_file.patch,portaudio-non-mmap-alsa.patch,startup_fix.patch
- added gsocket-conflict.patch to fix GSocket conflict
- added taglib-devel to BR
-------------------------------------------------------------------
Fri May 29 11:05:40 CEST 2009 - mseben@suse.cz

View File

@ -1,5 +1,5 @@
#
# spec file for package audacity (Version 1.3.7)
# spec file for package audacity (Version 1.3.8)
#
# Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
@ -24,9 +24,9 @@ Name: audacity
BuildRequires: flac-devel gcc-c++ glib-devel jack-devel libexpat-devel
BuildRequires: libid3tag-devel libsamplerate-devel libsndfile-devel
BuildRequires: libvorbis-devel soundtouch-devel update-desktop-files
BuildRequires: wxGTK-devel
# Only needed because of internal PortAudio, why aren't we using the system version?
BuildRequires: alsa-devel
BuildRequires: alsa-devel taglib-devel wxGTK-devel
# we use internal PortAudio, because audacity team grab sources
# from Portaudio's svn more frequently than we (e.g. see support for non-mmap devices like pulseaudio)
%if %{with ffmpeg}
BuildRequires: libffmpeg-devel
%endif
@ -37,28 +37,18 @@ BuildRequires: libmad-devel
BuildRequires: libtwolame-devel
%endif
Summary: A Free, Cross-Platform Digital Audio Editor
Version: 1.3.7
Release: 6
Version: 1.3.8
Release: 1
License: GPL v2 or later
Group: Productivity/Multimedia/Sound/Editors and Convertors
BuildRoot: %{_tmppath}/%{name}-%{version}-build
Url: http://audacity.sourceforge.net/
Source: %{name}-minsrc-%{version}.tar.bz2
Source2: %{name}.png
#PATCH-FIX-UPSTREAM return_non_void.patch fixed non-void return value (bnc#477654)
Patch1: %{name}-%{version}-return_non_void.patch
Patch2: %{name}-%{version}-endian-fix.patch
Patch3: %{name}-%{version}-font-fix.patch
#PATCH-FIX-UPSTREAM GSocket from wxGTK conflict with GSocket from glib2 - fix taken from Fedora
Patch1: %{name}-%{version}-gsocket-conflict.patch
Patch5: %{name}-%{version}-retval.patch
Patch6: %{name}-%{version}-strict-aliasing.patch
#PATCH-FIX-UPSTREAM fix build issues when linked wxGTK configured with --enable-stl flag
Patch8: %{name}-%{version}-wxGTK_with_stl.patch
Patch9: %{name}-%{version}-modal-help-dialog.patch
Patch10: %{name}-%{version}-desktop_file.patch
Patch11: %{name}-%{version}-portaudio-non-mmap-alsa.patch
Patch12: %{name}-%{version}-audiodevdefaults.patch
#PATCH-FIX-UPSTREAM fix startup crash (already in upstream cvs)
Patch13: %{name}-%{version}-startup_fix.patch
%description
Audacity is a program that manipulates digital audio wave forms. In
@ -87,17 +77,9 @@ Authors:
%prep
%setup -q -n %{name}-src-%{version}
%patch1
%patch2
%patch3
%patch1 -p1
%patch5
%patch6
%patch8
%patch9
%patch10
%patch11 -p1
%patch12 -p1
%patch13
%build
%{?suse_update_config:%{suse_update_config -f . lib-src/*/.}}
@ -122,9 +104,9 @@ export AUTOMAKE="automake --foreign"
%endif
--with-libsndfile=system \
--with-libflac=system \
--with-ladspa \
--with-libid3tag=system \
--with-libsamplerate=system \
--with-portaudio=v19
--with-libsamplerate=system
make %{?jobs:-j %jobs}
%install
@ -132,6 +114,8 @@ make DESTDIR=$RPM_BUILD_ROOT install
%suse_update_desktop_file audacity
install -d -m755 $RPM_BUILD_ROOT%{_datadir}/pixmaps
install -m 644 %{SOURCE2} $RPM_BUILD_ROOT%{_datadir}/pixmaps
# fix permission error on startup (help dir couldn't be created, should be fixed in next release)
mkdir -p $RPM_BUILD_ROOT%{_datadir}/%{name}/help/manual
# we will add docs later in %files section
rm -rf $RPM_BUILD_ROOT%{_datadir}/doc/audacity
%find_lang %{name}
@ -150,303 +134,3 @@ rm -rf $RPM_BUILD_ROOT
%{_datadir}/mime/packages/audacity.xml
%changelog
* Fri May 29 2009 mseben@suse.cz
- fix startup crash (startup_fix.patch)
* Thu May 21 2009 cmorve69@yahoo.es
- Got portaudio-non-mmap-alsa.patch and audiodevdefaults.patch from
Fedora to allow it to work with PulseAudio
* Tue May 19 2009 cmorve69@yahoo.es
- Add alsa-devel BR to allow ALSA output
* Mon May 11 2009 cmorve69@yahoo.es
- removed unneeded BuildRequires
- make ffmpeg, mad and twolame support build options
- use upstream .desktop file
- do not force -fno-strict-aliasing since upstream already does
* Wed Apr 08 2009 mseben@suse.cz
- added wxGTK_with_stl.patch to fix build issues when linking wxGTK
configured with --enable-stl flag
* Mon Feb 23 2009 mseben@suse.cz
- added return_non_void.patch to fix non-void return value (bnc#477654)
* Mon Feb 02 2009 mseben@suse.cz
- updated to version 1.3.7
Bug Fixes:
* Muting/soloing caused incorrect channel results in exported
stereo files
* Nyquist effects: pasted unmodified audio into the result,
no progress bar, truncation of processed audio on cancel
* Noise Removal: pasted unmodified audio into the result, unwanted
filtering tail
* Uncompressed exports: export as WAV could be corrupted if
overwriting to same file, export multiple to uncompressed formats
only produced 16-bit WAV
* Compressed exports: MP3 exports now produce correct bit rate
mode, quality and length, with improved metadata visibility
in player applications, WMA exports containing metadata are now correct
* Restored support for multi-channel recording devices that can
record more than two channels using Audacity
* fixes for spurious clipping, label typing, no shortcuts after
running effects
* project rate now always changes to respect that of first imported file
New Features:
* F11 Full Screen mode, high-quality "Sliding Time Scale/Pitch Shift"
effect, Audio Contrast Analyzer
Other changes:
* As a first step towards improving latency correction, a fixed
rather than variable correction is now applied
* Numerous minor interface fixes and improvements
- obsolete *-compile.patch, *-locale.patch
* Mon Jan 12 2009 mseben@suse.cz
- fixed Khmer translation file (*-locale.patch)
- added array-delete.patch to fix array delete (bnc#442936)
- added transparent desktop icon (audacity.png)
- obsolete *-portaudio-shlib.patch, *-nosse.patch
* Thu Dec 11 2008 mseben@suse.cz
- updated to version 1.3.6
Interface:
* "Save Compressed Copy of Project" saves in much smaller .OGG
format to facilitate online transmission of projects
* Improved MIDI import and export routines, and clearer color
for selection region
* Default temporary directory on Mac now accessible in Finder
Import / Export:
* Stability improvements in on-demand loading
* FFmpeg: support for latest version of library, improved
version checks and error messages, stability improvements
in custom exporter
Bug Fixes:
* Crash in "Get Noise Profile" step of Noise Removal at project
rates below 20480 Hz.
* Underestimation of peak level in tracks with a small number
of different peaks
* Truncate Silence could result in repeated or lost audio if
applied to the whole of a track
* Other interface, generating, exporting and platform-specific
fixes
Compilation:
* Added autoconf macro archive to CVS, enabling *.nix users
without this archive to build --with -MIDI
- renamed *-modal-help-dialog.diff to *-modal-help-dialog.patch,
also changed for 1.3.6 tarball
- added libexpat-devel to BuildRequires (directory lib-src/expat
in tarball 1.3.6 no longer exists)
* Thu Nov 20 2008 tiwai@suse.de
- fix modal dialog with the help browser (bnc#440032)
* Wed May 28 2008 anosek@suse.cz
- updated to version 1.3.5
Recording / Playback
* Several bugs fixed so that latency correction should be better, and more devices work correctly.
* Problems with invalid sample rates under Linux should be much rarer.
* Newer version of Portaudio library.
* New feature to record onto the end of an existing track (hold Shift while clicking Record).
Import / Export
* Updated versions of Libogg, Libvorbis, Libflac, Libsndfile and Twolame libraries.
* Handling of unsupported file formats more informative.
* Handling of file names with slashes on OS X improved.
* New dialog allows replacement of illegal file name characters on all platforms.
Interface
* Improved scaling and layout for rulers and VU meters.
* Envelope fixes/improvements including full control of undo/redo.
* New keyboard shortcuts and improved menu navigation.
* Preferences:
o More intuitive tab arrangement.
o New options for mute/solo and Metadata Editor behavior.
o Language can now be changed without restart.
* Expanded Build Information tab.
Effects
* New Vocal Remover plug-in, improvements for Generate effects.
- dropped obsoleted patches (cflags.patch) (CVE-2007-6061.patch)
* Wed May 14 2008 schwab@suse.de
- Remove useless patch.
* Wed Apr 02 2008 anosek@suse.cz
- fixed Insecure symlink handling (bnc#344588) (CVE-2007-6061.patch)
- temp file is now created in users home directory
* Fri Jan 25 2008 adrian@suse.de
- remove mad-devel in BuildRequires to keep the package as part
of Factory
* Fri Jan 18 2008 anosek@suse.cz
- updated to version 1.3.4
New features
New Welcome Screen with introduction to Audacity.
New keyboard command: 'Mix and Render to New Track' (bound to Ctrl+Shift+M).
New keyboard shortcut: "Shift-A" starts playback when stopped, or performs "Stop and Select" when playing.
Added support for VAMP audio analysis plug-ins.
Solo button solos only one track at a time, and a track cannot be both mute and solo.
Interface
Keyboard shortcuts for making short/long jumps along the timeline.
Added 'Snap To' in the Selection Bar.
Made keyboard navigation easier when multiple menu items with the same first letter exist.
Enhanced interface for label editing.
Layout of OK/Cancel buttons consistency improved.
Preferences:
* "Select all audio in project, if none selected" (on by default).
* "Beep on completion of longer activities" (system bell, not main output).
* Other preferences cleaned up and explanations improved.
Envelopes: Many fixes when copying / pasting / repeating.
Many translation updates.
Track height fixed in several cases.
CleanSpeech mode switching without closing and re-opening fixed.
Opening/Saving Formats
Metadata editor added for OGG, FLAC and WAV/AIFF exports, and general improvements.
Metadata import improved.
Muted tracks are no longer audible in the exported mix.
Effects
Truncate Silence: support for multiple and stereo tracks.
Dtmf Generator:
* Added support for keypad letters.
* Added an amplitude control.
Compressor: variable decay time added.
Equalization:
* Clicks at start / end prevented.
* Improvements to saved curves being found.
* Preview works correctly.
'Merge' command appears in Undo history.
Clipping detected more reliably.
Nyquist plug-ins reviewed and enhanced.
Better (and more) progress bars.
Cancelling effect always restores previous audio.
Several improvement to effects in batch mode.
Recording/Playback
Improvements to latency correction.
Updated version of portaudio-v19 library.
Note that Help is no longer built in, but accessible on the Web via links in Audacity.
- dropped obsoleted patches:
* flac.patch - already in upstream
* equalization.patch - already in upstream
* build.patch
* hu_update.patch.bz2
- added patch to fix compilation errors (compile.patch)
* Wed Sep 19 2007 prusnak@suse.cz
- fix broken Equalization effect (equalization.patch) [#326217]
* Thu Aug 02 2007 anosek@suse.cz
- fixed Hungarian translation update [#295657] (hu_update.patch)
* Thu Jun 21 2007 sbrabec@suse.cz
- Build with system soundtouch.
- Build with jack support.
* Wed Jun 06 2007 sbrabec@suse.cz
- Removed invalid desktop Category "Application" (#254654).
* Tue May 29 2007 prusnak@suse.cz
- updated to 1.3.3
* added collapse/expand tracks
* multiple clips per track
* added selection bar
* improved label tracks
* better performance with large projects
* added transcription toolbar
* improved accessibility for the visually impaired
* added auto-save and automatic crash recovery
* added batch processing
* metadata may be added to OGG files
* EQ effect responsiveness improved
* new Auto Duck effect
* DTMF tone generator
- dropped obsoleted patches:
* ambigous.patch
* overflow-fix.patch (included in update)
* qualification.patch (included in update)
* wx-compat.patch
- added patches:
* flac.patch - adjust for new FLAC 1.1.4 API
* nosse.patch - don't try to use SSE on non-x86 archs
* Fri Apr 20 2007 schwab@suse.de
- Fix quoting in autoconf macros.
* Thu Aug 10 2006 anosek@suse.cz
- fixed build with new version of autotools (audacity-build.patch)
* Sun Feb 19 2006 stbinner@suse.de
- add GenericName to .desktop file
* Wed Feb 15 2006 sbrabec@suse.cz
- Build with portaudio19 (#151210).
* Mon Jan 30 2006 aj@suse.de
- Further fix to BuildRequires.
* Sun Jan 29 2006 aj@suse.de
- Fix buildrequires.
* Wed Jan 25 2006 mls@suse.de
- converted neededforbuild to BuildRequires
* Fri Dec 16 2005 sbrabec@suse.cz
- Returned back required wx-compat patch.
* Wed Dec 07 2005 sbrabec@suse.cz
- Updated to version 1.2.4b.
* Wed Nov 09 2005 sbrabec@suse.cz
- Strict aliasing fix.
* Tue Oct 25 2005 sbrabec@suse.cz
- Fixed extra qualification.
- Build with correct CFLAGS.
- Fixed random return values.
* Fri Oct 14 2005 sbrabec@suse.cz
- Disabled mad support.
* Fri Apr 15 2005 mcihar@suse.de
- add SDL-devel-packages because of wxGTK
* Thu Feb 17 2005 hvogel@suse.de
- mark as nosrc
* Tue Nov 23 2004 ro@suse.de
- fix build with current wxGTK
* Mon Nov 22 2004 mcihar@suse.cz
- update to 1.2.3
* Mon Sep 06 2004 mcihar@suse.cz
-fix build on 64-bit arches
* Fri Sep 03 2004 mcihar@suse.cz
- update to 1.2.2
* Thu Aug 05 2004 tiwai@suse.de
- updated to version 1.2.1.
- using wxGTK-compat library.
* Sun Mar 28 2004 tiwai@suse.de
- fixed the segfault at the start up (bug #34313)
- fixed the size of fonts for wxGTK with GTK-2.
- fixed possible buffer overflows.
- build with portaudio-v18, v19 seems problematic.
* Fri Mar 05 2004 tiwai@suse.de
- updated to version 1.2.0 final.
* Mon Feb 16 2004 tiwai@suse.de
- updated to version 1.2.0-pre4.
* Thu Jan 22 2004 tiwai@suse.de
- fixed the build with the latest autoconf.
* Wed Jan 14 2004 tiwai@suse.de
- updated to version 1.2.0-pre3.
- use portaudio v19 (shared lib).
* Tue Jan 13 2004 tiwai@suse.de
- fixed the neededforbuild for the latest wxGTK with gtk2.
* Sat Jan 10 2004 adrian@suse.de
- build as user
* Mon Sep 15 2003 tiwai@suse.de
- added desktop icon.
* Sun Sep 14 2003 adrian@suse.de
- add AudioVideoEditing Category
* Fri Aug 29 2003 tiwai@suse.de
- fixed the bug of WAVE display.
* Thu Aug 14 2003 tiwai@suse.de
- added desktop file.
* Mon Aug 11 2003 tiwai@suse.de
- updated to version 1.2.0-pre1.
- help file is installed under /usr/share/audacity.
* Thu Jul 03 2003 tiwai@suse.de
- fixed neededforbuild for the recent update of mad.
* Tue May 27 2003 ro@suse.de
- removed unpackaged files from buildroot
* Thu Mar 27 2003 tiwai@suse.de
- updated to version 1.1.3.
linked with libFLAC and libsamplerate.
* Tue Nov 26 2002 tiwai@suse.de
- updated to version 1.1.1.
- build with the system libsndfile since now audacity supports
libsndfile 1.0.
- enabled nyquist support.
* Fri Aug 30 2002 tiwai@suse.de
- updated to version 1.1.0 cvs 2002.08.30.
the 1.1.0 tarball version has a major bug regarding to project
file management (bug #18662). this version fixes the problem.
also, this one includes a help text, which wasn't there.
* Wed Jul 24 2002 tiwai@suse.de
- updated to version 1.1.0.
* Mon Jul 01 2002 tiwai@suse.de
- updated to the stable version 1.0.0-2.
* Wed Apr 17 2002 tiwai@suse.de
- fixed build with gcc-3.1.
* Wed Apr 10 2002 ro@suse.de
- work around autoconf problem: first AC_CHECK_HEADER
apparently has to be outside of an if ... fi block
* Fri Feb 01 2002 ro@suse.de
- changed neededforbuild <libpng> to <libpng-devel-packages>
* Fri Jan 25 2002 ro@suse.de
- added libpng,libjpeg,libtiff to neededforbuild
* Thu Jan 24 2002 tiwai@suse.de
- initial package version: 0.98.
- built with the shared id3lib.