Skip to content

Commit 48f916a

Browse files
committed
fix SamplePlayerTest's async file load when using BufferPlayerNode
1 parent d6e6f21 commit 48f916a

File tree

1 file changed

+17
-10
lines changed

1 file changed

+17
-10
lines changed

test/_audio/AudioTests/src/SamplePlayerTest.cpp

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -76,9 +76,7 @@ void SamplePlayerTest::setupBufferPlayerNode()
7676

7777
auto loadFn = [bufferPlayer, this] {
7878
bufferPlayer->loadBuffer( mSourceFile->clone() );
79-
mWaveformPlot.load( bufferPlayer->getBuffer(), app::getWindowBounds() );
80-
CI_LOG_V( "loaded source buffer, frames: " << bufferPlayer->getBuffer()->getNumFrames() );
81-
79+
CI_LOG_I( "loaded source buffer, frames: " << bufferPlayer->getBuffer()->getNumFrames() );
8280
};
8381

8482
auto connectFn = [bufferPlayer, this] {
@@ -98,12 +96,14 @@ void SamplePlayerTest::setupBufferPlayerNode()
9896
mAsyncLoadFuture = std::async( [=] {
9997
loadFn();
10098
app::App::get()->dispatchAsync( [=] {
99+
mWaveformPlot.load( bufferPlayer->getBuffer(), app::getWindowBounds() );
101100
connectFn();
102101
} );
103102
} );
104103
}
105104
else {
106105
loadFn();
106+
mWaveformPlot.load( bufferPlayer->getBuffer(), app::getWindowBounds() );
107107
connectFn();
108108
};
109109
}
@@ -202,9 +202,6 @@ void SamplePlayerTest::printSupportedExtensions()
202202
app::console() << endl;
203203
}
204204

205-
// TODO: if mLoadAsync is true then use std::async like in setupBufferPlayerNode()
206-
// - for setSourceFile()
207-
// - for bufferPlayer->loadBuffer()
208205
void SamplePlayerTest::openFile( const ci::fs::path &fullPath )
209206
{
210207
try {
@@ -221,8 +218,18 @@ void SamplePlayerTest::openFile( const ci::fs::path &fullPath )
221218

222219
auto bufferPlayer = dynamic_pointer_cast<audio::BufferPlayerNode>( mSamplePlayerNode );
223220
if( bufferPlayer ) {
224-
bufferPlayer->loadBuffer( mSourceFile->clone() );
225-
mWaveformPlot.load( bufferPlayer->getBuffer(), app::getWindowBounds() );
221+
if( mLoadAsync ) {
222+
mAsyncLoadFuture = std::async( [=] {
223+
bufferPlayer->loadBuffer( mSourceFile->clone() );
224+
app::App::get()->dispatchAsync( [=] {
225+
mWaveformPlot.load( bufferPlayer->getBuffer(), app::getWindowBounds() );
226+
} );
227+
} );
228+
}
229+
else {
230+
bufferPlayer->loadBuffer( mSourceFile->clone() );
231+
mWaveformPlot.load( bufferPlayer->getBuffer(), app::getWindowBounds() );
232+
}
226233
}
227234
else {
228235
auto filePlayer = dynamic_pointer_cast<audio::FilePlayerNode>( mSamplePlayerNode );
@@ -258,7 +265,7 @@ void SamplePlayerTest::update()
258265
}
259266

260267
// testing delayed trigger: print SamplePlayerNode start / stop times
261-
if( mSamplePlayerNodeEnabledState != mSamplePlayerNode->isEnabled() ) {
268+
if( mSamplePlayerNode && mSamplePlayerNodeEnabledState != mSamplePlayerNode->isEnabled() ) {
262269
mSamplePlayerNodeEnabledState = mSamplePlayerNode->isEnabled();
263270
string stateStr = mSamplePlayerNodeEnabledState ? "started" : "stopped";
264271
CI_LOG_I( "mSamplePlayerNode " << stateStr << " at " << app::getElapsedSeconds() << ", isEof: " << boolalpha << mSamplePlayerNode->isEof() << dec );
@@ -291,7 +298,7 @@ void SamplePlayerTest::draw()
291298
audio::BufferRef recordedBuffer = mRecorder->getRecordedCopy();
292299
drawAudioBuffer( *recordedBuffer, app::getWindowBounds() );
293300
}
294-
else {
301+
else if( mSamplePlayerNode ) {
295302
auto bufferPlayer = dynamic_pointer_cast<audio::BufferPlayerNode>( mSamplePlayerNode );
296303
if( bufferPlayer )
297304
mWaveformPlot.draw();

0 commit comments

Comments
 (0)