diff --git a/data/locale/ca.qm b/data/locale/ca.qm new file mode 100644 index 00000000000..d4ec84da5a9 Binary files /dev/null and b/data/locale/ca.qm differ diff --git a/data/locale/cs.qm b/data/locale/cs.qm new file mode 100644 index 00000000000..50b1ff7ea9e Binary files /dev/null and b/data/locale/cs.qm differ diff --git a/data/locale/de.qm b/data/locale/de.qm new file mode 100644 index 00000000000..51b91e13483 Binary files /dev/null and b/data/locale/de.qm differ diff --git a/data/locale/en.qm b/data/locale/en.qm new file mode 100644 index 00000000000..be651eede2e --- /dev/null +++ b/data/locale/en.qm @@ -0,0 +1 @@ +<¸dÊÍ!¿`¡½Ý \ No newline at end of file diff --git a/data/locale/es.qm b/data/locale/es.qm new file mode 100644 index 00000000000..f6f2c36651d Binary files /dev/null and b/data/locale/es.qm differ diff --git a/data/locale/fa.qm b/data/locale/fa.qm new file mode 100644 index 00000000000..b67e6006f1c Binary files /dev/null and b/data/locale/fa.qm differ diff --git a/data/locale/fr.qm b/data/locale/fr.qm new file mode 100644 index 00000000000..1766d23773f Binary files /dev/null and b/data/locale/fr.qm differ diff --git a/data/locale/gl.qm b/data/locale/gl.qm new file mode 100644 index 00000000000..e56a474429b Binary files /dev/null and b/data/locale/gl.qm differ diff --git a/data/locale/it.qm b/data/locale/it.qm new file mode 100644 index 00000000000..c315ebf79c6 Binary files /dev/null and b/data/locale/it.qm differ diff --git a/data/locale/ja.qm b/data/locale/ja.qm new file mode 100644 index 00000000000..c3185d3615a Binary files /dev/null and b/data/locale/ja.qm differ diff --git a/data/locale/ko.qm b/data/locale/ko.qm new file mode 100644 index 00000000000..a141ea36eab Binary files /dev/null and b/data/locale/ko.qm differ diff --git a/data/locale/nl.qm b/data/locale/nl.qm new file mode 100644 index 00000000000..e093697ce04 Binary files /dev/null and b/data/locale/nl.qm differ diff --git a/data/locale/pl.qm b/data/locale/pl.qm new file mode 100644 index 00000000000..abd3c9564d4 Binary files /dev/null and b/data/locale/pl.qm differ diff --git a/data/locale/pt.qm b/data/locale/pt.qm new file mode 100644 index 00000000000..e43a791c977 Binary files /dev/null and b/data/locale/pt.qm differ diff --git a/data/locale/ru.qm b/data/locale/ru.qm new file mode 100644 index 00000000000..33d58741c40 Binary files /dev/null and b/data/locale/ru.qm differ diff --git a/data/locale/sv.qm b/data/locale/sv.qm new file mode 100644 index 00000000000..74ae8b1f2bd Binary files /dev/null and b/data/locale/sv.qm differ diff --git a/data/locale/uk.qm b/data/locale/uk.qm new file mode 100644 index 00000000000..b2cf59cd779 Binary files /dev/null and b/data/locale/uk.qm differ diff --git a/data/locale/zh.qm b/data/locale/zh.qm new file mode 100644 index 00000000000..663080f36e2 Binary files /dev/null and b/data/locale/zh.qm differ diff --git a/include/Mixer.h b/include/Mixer.h index d2bf15864a5..3e37942df2b 100644 --- a/include/Mixer.h +++ b/include/Mixer.h @@ -175,6 +175,10 @@ class EXPORT Mixer : public QObject { return m_audioDevName; } + inline bool audioDevStartFailed() const + { + return m_audioDevStartFailed; + } void setAudioDevice( AudioDevice * _dev ); void setAudioDevice( AudioDevice * _dev, @@ -186,7 +190,6 @@ class EXPORT Mixer : public QObject return m_audioDev; } - // audio-port-stuff inline void addAudioPort( AudioPort * _port ) { @@ -368,10 +371,10 @@ class EXPORT Mixer : public QObject private: typedef fifoBuffer fifo; - class fifoWriter : public QThread + class FifoWriterThread : public QThread { public: - fifoWriter( Mixer * _mixer, fifo * _fifo ); + FifoWriterThread( Mixer * _mixer, fifo * _fifo ); void finish(); @@ -396,7 +399,6 @@ class EXPORT Mixer : public QObject AudioDevice * tryAudioDevices(); MidiClient * tryMidiClients(); - const surroundSampleFrame * renderNextBuffer(); @@ -444,6 +446,7 @@ class EXPORT Mixer : public QObject AudioDevice * m_audioDev; AudioDevice * m_oldAudioDev; QString m_audioDevName; + bool m_audioDevStartFailed; MidiClient * m_midiClient; @@ -456,7 +459,7 @@ class EXPORT Mixer : public QObject QMutex m_playHandleRemovalMutex; fifo * m_fifo; - fifoWriter * m_fifoWriter; + FifoWriterThread * m_fifoWriter; MixerProfiler m_profiler; diff --git a/src/core/Mixer.cpp b/src/core/Mixer.cpp index 948a4790f96..db20360a50b 100644 --- a/src/core/Mixer.cpp +++ b/src/core/Mixer.cpp @@ -72,6 +72,7 @@ Mixer::Mixer( bool renderOnly ) : m_masterGain( 1.0f ), m_audioDev( NULL ), m_oldAudioDev( NULL ), + m_audioDevStartFailed( false ), m_globalMutex( QMutex::Recursive ), m_profiler(), m_metronomeActive(false) @@ -201,7 +202,7 @@ void Mixer::startProcessing( bool _needs_fifo ) { if( _needs_fifo ) { - m_fifoWriter = new fifoWriter( this, m_fifo ); + m_fifoWriter = new FifoWriterThread( this, m_fifo ); m_fifoWriter->start( QThread::HighPriority ); } else @@ -742,10 +743,7 @@ AudioDevice * Mixer::tryAudioDevices() AudioDevice * dev = NULL; QString dev_name = ConfigManager::inst()->value( "mixer", "audiodev" ); - if( dev_name == AudioDummy::name() ) - { - dev_name = ""; - } + m_audioDevStartFailed = false; #ifdef LMMS_HAVE_ALSA if( dev_name == AudioAlsa::name() || dev_name == "" ) @@ -839,9 +837,14 @@ AudioDevice * Mixer::tryAudioDevices() //} //delete dev - printf( "No audio-driver working - falling back to dummy-audio-" - "driver\nYou can render your songs and listen to the output " - "files...\n" ); + if( dev_name != AudioDummy::name() ) + { + printf( "No audio-driver working - falling back to dummy-audio-" + "driver\nYou can render your songs and listen to the output " + "files...\n" ); + + m_audioDevStartFailed = true; + } m_audioDevName = AudioDummy::name(); @@ -934,7 +937,7 @@ MidiClient * Mixer::tryMidiClients() -Mixer::fifoWriter::fifoWriter( Mixer* mixer, fifo * _fifo ) : +Mixer::FifoWriterThread::FifoWriterThread( Mixer* mixer, fifo * _fifo ) : m_mixer( mixer ), m_fifo( _fifo ), m_writing( true ) @@ -944,7 +947,7 @@ Mixer::fifoWriter::fifoWriter( Mixer* mixer, fifo * _fifo ) : -void Mixer::fifoWriter::finish() +void Mixer::FifoWriterThread::finish() { m_writing = false; } @@ -952,7 +955,7 @@ void Mixer::fifoWriter::finish() -void Mixer::fifoWriter::run() +void Mixer::FifoWriterThread::run() { disable_denormals(); diff --git a/src/gui/MainWindow.cpp b/src/gui/MainWindow.cpp index 09a62935224..bf913a78cb8 100644 --- a/src/gui/MainWindow.cpp +++ b/src/gui/MainWindow.cpp @@ -559,10 +559,11 @@ void MainWindow::finalize() SetupDialog sd; sd.exec(); } - // look whether mixer could use a audio-interface beside AudioDummy - else if( Engine::mixer()->audioDevName() == AudioDummy::name() ) + // look whether mixer failed to start the audio device selected by the + // user and is using AudioDummy as a fallback + else if( Engine::mixer()->audioDevStartFailed() ) { - // no, so we offer setup-dialog with audio-settings... + // if so, offer the audio settings section of the setup dialog SetupDialog sd( SetupDialog::AudioSettings ); sd.exec(); }