Check if audio file is empty before loading

This commit is contained in:
sakertooth
2023-08-28 03:07:06 -04:00
parent dbf32148c2
commit d7f9f593f0
5 changed files with 45 additions and 26 deletions

View File

@@ -144,12 +144,12 @@ OscillatorObject::OscillatorObject( Model * _parent, int _idx ) :
void OscillatorObject::oscUserDefWaveDblClick()
{
QString af = gui::SampleLoader::openWaveformFile();
auto buffer = gui::SampleLoader::createBufferFromFile(af);
// TODO C++20: Deprecated, use std::atomic<std::shared_ptr> instead
std::atomic_store(&m_sampleBuffer, std::shared_ptr<const SampleBuffer>(std::move(buffer)));
if( af != "" )
if (af != "")
{
auto buffer = gui::SampleLoader::createBufferFromFile(af);
// TODO C++20: Deprecated, use std::atomic<std::shared_ptr> instead
std::atomic_store(&m_sampleBuffer, std::shared_ptr<const SampleBuffer>(std::move(buffer)));
// TODO:
//m_usrWaveBtn->setToolTip(m_sampleBuffer->audioFile());
}
@@ -291,9 +291,12 @@ void TripleOscillator::loadSettings( const QDomElement & _this )
m_osc[i]->m_useWaveTableModel.loadSettings( _this,
"useWaveTable" + QString::number (i+1 ) );
auto buffer = gui::SampleLoader::createBufferFromFile(_this.attribute("userwavefile" + is));
// TODO C++20: Deprecated, use std::atomic<std::shared_ptr> instead
std::atomic_store(&m_osc[i]->m_sampleBuffer, std::shared_ptr<const SampleBuffer>(std::move(buffer)));
if (!_this.attribute("userwavefile" + is).isEmpty())
{
auto buffer = gui::SampleLoader::createBufferFromFile(_this.attribute("userwavefile" + is));
// TODO C++20: Deprecated, use std::atomic<std::shared_ptr> instead
std::atomic_store(&m_osc[i]->m_sampleBuffer, std::shared_ptr<const SampleBuffer>(std::move(buffer)));
}
}
}

View File

@@ -389,9 +389,13 @@ void EnvelopeAndLfoParameters::loadSettings( const QDomElement & _this )
m_sustainModel.setValue( 1.0 - m_sustainModel.value() );
}
auto buffer = gui::SampleLoader::createBufferFromFile(_this.attribute("userwavefile"));
// TODO C++20: Deprecated, use std::atomic<std::shared_ptr> instead
std::atomic_store(&m_userWave, std::shared_ptr<const SampleBuffer>(std::move(buffer)));
if (!_this.attribute("userwavefile").isEmpty())
{
auto buffer = gui::SampleLoader::createBufferFromFile(_this.attribute("userwavefile"));
// TODO C++20: Deprecated, use std::atomic<std::shared_ptr> instead
std::atomic_store(&m_userWave, std::shared_ptr<const SampleBuffer>(std::move(buffer)));
}
updateSampleVars();
}

View File

@@ -213,9 +213,12 @@ void LfoController::loadSettings( const QDomElement & _this )
m_waveModel.loadSettings( _this, "wave" );
m_multiplierModel.loadSettings( _this, "multiplier" );
auto buffer = gui::SampleLoader::createBufferFromFile(_this.attribute("userwavefile"));
// TODO C++20: Deprecated, use std::atomic<std::shared_ptr> instead
std::atomic_store(&m_userDefSampleBuffer, std::shared_ptr<const SampleBuffer>(std::move(buffer)));
if (!_this.attribute("userwavefile").isEmpty())
{
auto buffer = gui::SampleLoader::createBufferFromFile(_this.attribute("userwavefile"));
// TODO C++20: Deprecated, use std::atomic<std::shared_ptr> instead
std::atomic_store(&m_userDefSampleBuffer, std::shared_ptr<const SampleBuffer>(std::move(buffer)));
}
updateSampleFunction();
}

View File

@@ -213,13 +213,13 @@ void LfoControllerDialog::askUserDefWave()
{
auto sampleBuffer = dynamic_cast<LfoController*>(this->model())->m_userDefSampleBuffer;
QString fileName = SampleLoader::openWaveformFile();
auto buffer = SampleLoader::createBufferFromFile(fileName);
// TODO C++20: Deprecated, use std::atomic<std::shared_ptr> instead
std::atomic_store(&sampleBuffer, std::shared_ptr<const SampleBuffer>(std::move(buffer)));
if( fileName.isEmpty() == false )
if (!fileName.isEmpty())
{
auto buffer = SampleLoader::createBufferFromFile(fileName);
// TODO C++20: Deprecated, use std::atomic<std::shared_ptr> instead
std::atomic_store(&sampleBuffer, std::shared_ptr<const SampleBuffer>(std::move(buffer)));
// TODO:
m_userWaveBtn->setToolTip(sampleBuffer->audioFile());
}

View File

@@ -323,9 +323,13 @@ void EnvelopeAndLfoView::dropEvent( QDropEvent * _de )
QString value = StringPairDrag::decodeValue( _de );
if( type == "samplefile" )
{
auto buffer = SampleLoader::createBufferFromFile(StringPairDrag::decodeValue(_de));
// TODO C++20: Deprecated, use std::atomic<std::shared_ptr> instead
std::atomic_store(&m_params->m_userWave, std::shared_ptr<const SampleBuffer>(std::move(buffer)));
if (!value.isEmpty())
{
auto buffer = SampleLoader::createBufferFromFile(value);
// TODO C++20: Deprecated, use std::atomic<std::shared_ptr> instead
std::atomic_store(&m_params->m_userWave, std::shared_ptr<const SampleBuffer>(std::move(buffer)));
}
m_userLfoBtn->model()->setValue( true );
m_params->m_lfoWaveModel.setValue(static_cast<int>(EnvelopeAndLfoParameters::LfoShape::UserDefinedWave));
_de->accept();
@@ -337,9 +341,14 @@ void EnvelopeAndLfoView::dropEvent( QDropEvent * _de )
auto file = dataFile.content().
firstChildElement().firstChildElement().
firstChildElement().attribute("src");
auto buffer = SampleLoader::createBufferFromFile(file);
// TODO C++20: Deprecated, use std::atomic<std::shared_ptr> instead
std::atomic_store(&m_params->m_userWave, std::shared_ptr<const SampleBuffer>(std::move(buffer)));
if (!file.isEmpty())
{
auto buffer = SampleLoader::createBufferFromFile(file);
// TODO C++20: Deprecated, use std::atomic<std::shared_ptr> instead
std::atomic_store(&m_params->m_userWave, std::shared_ptr<const SampleBuffer>(std::move(buffer)));
}
m_userLfoBtn->model()->setValue( true );
m_params->m_lfoWaveModel.setValue(static_cast<int>(EnvelopeAndLfoParameters::LfoShape::UserDefinedWave));
_de->accept();