diff --git a/include/Mixer.h b/include/Mixer.h index 1c3780b1bee..49920589250 100644 --- a/include/Mixer.h +++ b/include/Mixer.h @@ -175,6 +175,7 @@ class EXPORT Mixer : public QObject void setAudioDevice( AudioDevice * _dev, const struct qualitySettings & _qs, bool _needs_fifo ); + void storeAudioDevice(); void restoreAudioDevice(); inline AudioDevice * audioDev() { diff --git a/include/ProjectRenderer.h b/include/ProjectRenderer.h index 543eb43c393..9a449447ce5 100644 --- a/include/ProjectRenderer.h +++ b/include/ProjectRenderer.h @@ -88,7 +88,6 @@ public slots: AudioFileDevice * m_fileDev; Mixer::qualitySettings m_qualitySettings; - Mixer::qualitySettings m_oldQualitySettings; volatile int m_progress; volatile bool m_abort; diff --git a/include/RenderManager.h b/include/RenderManager.h index e7e119b871b..d4562ed67ed 100644 --- a/include/RenderManager.h +++ b/include/RenderManager.h @@ -65,6 +65,7 @@ private slots: void restoreMutedState(); const Mixer::qualitySettings m_qualitySettings; + const Mixer::qualitySettings m_oldQualitySettings; const OutputSettings m_outputSettings; ProjectRenderer::ExportFileFormats m_format; QString m_outputPath; diff --git a/src/core/Mixer.cpp b/src/core/Mixer.cpp index ed8d04a6ce8..830d7e6c85e 100644 --- a/src/core/Mixer.cpp +++ b/src/core/Mixer.cpp @@ -579,8 +579,6 @@ void Mixer::setAudioDevice( AudioDevice * _dev ) { stopProcessing(); - m_oldAudioDev = m_audioDev; - if( _dev == NULL ) { printf( "param _dev == NULL in Mixer::setAudioDevice(...). " @@ -608,7 +606,6 @@ void Mixer::setAudioDevice( AudioDevice * _dev, stopProcessing(); m_qualitySettings = _qs; - m_oldAudioDev = m_audioDev; if( _dev == NULL ) { @@ -630,6 +627,17 @@ void Mixer::setAudioDevice( AudioDevice * _dev, +void Mixer::storeAudioDevice() +{ + if( !m_oldAudioDev ) + { + m_oldAudioDev = m_audioDev; + } +} + + + + void Mixer::restoreAudioDevice() { if( m_oldAudioDev != NULL ) diff --git a/src/core/ProjectRenderer.cpp b/src/core/ProjectRenderer.cpp index 56e9c01c0a9..3e3004db798 100644 --- a/src/core/ProjectRenderer.cpp +++ b/src/core/ProjectRenderer.cpp @@ -77,7 +77,6 @@ ProjectRenderer::ProjectRenderer( const Mixer::qualitySettings & qualitySettings QThread( Engine::mixer() ), m_fileDev( NULL ), m_qualitySettings( qualitySettings ), - m_oldQualitySettings( Engine::mixer()->currentQualitySettings() ), m_progress( 0 ), m_abort( false ) { @@ -103,8 +102,6 @@ ProjectRenderer::ProjectRenderer( const Mixer::qualitySettings & qualitySettings ProjectRenderer::~ProjectRenderer() { - Engine::mixer()->restoreAudioDevice(); // also deletes audio-dev - Engine::mixer()->changeQuality( m_oldQualitySettings ); } diff --git a/src/core/RenderManager.cpp b/src/core/RenderManager.cpp index 5fcc6a5835e..7d1f4275e14 100644 --- a/src/core/RenderManager.cpp +++ b/src/core/RenderManager.cpp @@ -37,16 +37,22 @@ RenderManager::RenderManager( ProjectRenderer::ExportFileFormats fmt, QString outputPath) : m_qualitySettings(qualitySettings), + m_oldQualitySettings( Engine::mixer()->currentQualitySettings() ), m_outputSettings(outputSettings), m_format(fmt), m_outputPath(outputPath), m_activeRenderer(NULL) { + Engine::mixer()->storeAudioDevice(); } RenderManager::~RenderManager() { delete m_activeRenderer; + m_activeRenderer = NULL; + + Engine::mixer()->restoreAudioDevice(); // Also deletes audio dev. + Engine::mixer()->changeQuality( m_oldQualitySettings ); } void RenderManager::abortProcessing()