@@ -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()
208205void 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