diff --git a/src/record/RecorderManager.java b/src/record/RecorderManager.java index e247036b..b9941926 100644 --- a/src/record/RecorderManager.java +++ b/src/record/RecorderManager.java @@ -72,8 +72,8 @@ public class RecorderManager implements Listener } else if( audioPacket.getType() == AudioPacket.Type.END ) { - mRecorders.remove( identifier ); - recorder.stop(); + RealBufferWaveRecorder finished = mRecorders.remove( identifier ); + finished.stop(); } } else if( audioPacket.getType() == AudioPacket.Type.AUDIO ) diff --git a/src/record/wave/RealBufferWaveRecorder.java b/src/record/wave/RealBufferWaveRecorder.java index 5de38587..49b0f3b6 100644 --- a/src/record/wave/RealBufferWaveRecorder.java +++ b/src/record/wave/RealBufferWaveRecorder.java @@ -125,11 +125,10 @@ public class RealBufferWaveRecorder extends Module public void stop() { - if( mRunning.compareAndSet( true, false ) ) - { - /* Signal the buffer processor to end with a poison pill */ - receive( new PoisonPill() ); - } + /* Signal the buffer processor to end with a poison pill */ + receive( new PoisonPill() ); + + mRunning.set( false ); } @Override @@ -191,7 +190,6 @@ public class RealBufferWaveRecorder extends Module try { mWriter.close(); - mWriter = null; } catch( IOException io ) { @@ -200,11 +198,12 @@ public class RealBufferWaveRecorder extends Module } } - mFile = null; - mThreadPoolManager.cancel( mProcessorHandle ); + mWriter = null; + mFile = null; mProcessorHandle = null; + mThreadPoolManager = null; } else {