diff --git a/src/controller/channel/ChannelProcessingManager.java b/src/controller/channel/ChannelProcessingManager.java index 9b0e9df1..65aa700e 100644 --- a/src/controller/channel/ChannelProcessingManager.java +++ b/src/controller/channel/ChannelProcessingManager.java @@ -218,8 +218,7 @@ public class ChannelProcessingManager implements ChannelEventListener } /* Setup event logging */ - List loggers = mEventLogManager.getLoggers( - channel.getEventLogConfiguration(), channel.getName()); + List loggers = mEventLogManager.getLoggers(channel.getEventLogConfiguration(), channel.getName()); if (!loggers.isEmpty()) { @@ -232,19 +231,15 @@ public class ChannelProcessingManager implements ChannelEventListener if (!recorders.isEmpty()) { /* Add baseband recorder */ - if ((recorders.contains(RecorderType.BASEBAND) && - channel.getChannelType() == ChannelType.STANDARD)) + if ((recorders.contains(RecorderType.BASEBAND) && channel.getChannelType() == ChannelType.STANDARD)) { - processingChain.addModule(mRecorderManager.getBasebandRecorder( - channel.toString())); + processingChain.addModule(mRecorderManager.getBasebandRecorder(channel.toString())); } /* Add traffic channel baseband recorder */ - if (recorders.contains(RecorderType.TRAFFIC_BASEBAND) && - channel.getChannelType() == ChannelType.TRAFFIC) + if (recorders.contains(RecorderType.TRAFFIC_BASEBAND) && channel.getChannelType() == ChannelType.TRAFFIC) { - processingChain.addModule(mRecorderManager - .getBasebandRecorder(channel.toString())); + processingChain.addModule(mRecorderManager.getBasebandRecorder(channel.toString())); } } @@ -275,9 +270,14 @@ public class ChannelProcessingManager implements ChannelEventListener if (mProcessingChains.containsKey(channel.getChannelID())) { - ProcessingChain chain = mProcessingChains.get(channel.getChannelID()); + ProcessingChain processingChain = mProcessingChains.get(channel.getChannelID()); + + processingChain.stop(); + + processingChain.removeEventLoggingModules(); + + processingChain.removeRecordingModules(); - chain.stop(); mChannelModel.broadcast(new ChannelEvent(channel, Event.NOTIFICATION_PROCESSING_STOP)); @@ -285,7 +285,7 @@ public class ChannelProcessingManager implements ChannelEventListener { mProcessingChains.remove(channel.getChannelID()); - chain.dispose(); + processingChain.dispose(); } } } diff --git a/src/module/ProcessingChain.java b/src/module/ProcessingChain.java index 298ba1e3..6d6f91e7 100644 --- a/src/module/ProcessingChain.java +++ b/src/module/ProcessingChain.java @@ -687,17 +687,13 @@ public class ProcessingChain implements IChannelEventListener { module.stop(); } - - removeEventLoggingModules(); - - removeRecordingModules(); } } /** * Removes any logging modules that are currently registered with this processing chain */ - private void removeEventLoggingModules() + public void removeEventLoggingModules() { List eventLoggingModules = new ArrayList<>(); @@ -718,7 +714,7 @@ public class ProcessingChain implements IChannelEventListener /** * Removes any recording modules that are currently registered with this processing chain */ - private void removeRecordingModules() + public void removeRecordingModules() { List recordingModules = new ArrayList<>(); diff --git a/src/record/RecorderManager.java b/src/record/RecorderManager.java index e71689b7..a35f5c17 100644 --- a/src/record/RecorderManager.java +++ b/src/record/RecorderManager.java @@ -45,7 +45,8 @@ public class RecorderManager implements Listener private boolean mCanStartNewRecorders = true; /** - * Manages starting and stopping all system recorders and distributes channel audio to each of the recorders. + * Manages all audio recording for all processing channels. Reconstructs audio streams and distributes channel + * audio to each of the recorders, starting and stopping the recorders as needed. */ public RecorderManager(ThreadPoolManager threadPoolManager) {