diff --git a/src/main/java/io/github/dsheirer/channel/state/ChannelState.java b/src/main/java/io/github/dsheirer/channel/state/ChannelState.java index 282a8b9f..2cfd78b5 100644 --- a/src/main/java/io/github/dsheirer/channel/state/ChannelState.java +++ b/src/main/java/io/github/dsheirer/channel/state/ChannelState.java @@ -135,21 +135,8 @@ public class ChannelState extends Module implements ICallEventProvider, IDecoder @Override public void stop() { - mMutableMetadata.resetAllAttributes(); - - mTrafficChannelEndListener = null; - - if(mTrafficChannelCallEvent != null) - { - mTrafficChannelCallEvent.end(); - broadcast(mTrafficChannelCallEvent); - } - - mTrafficChannelCallEvent = null; - + processTeardownState(); mSquelchLocked = false; - - setState(State.TEARDOWN); } public void dispose() @@ -420,9 +407,13 @@ public class ChannelState extends Module implements ICallEventProvider, IDecoder mMutableMetadata.receive(new AttributeChangeRequest(Attribute.CHANNEL_STATE, mState)); - if(mTrafficChannelEndListener != null) + if(mTrafficChannelEndListener != null && mTrafficChannelCallEvent != null) { + mTrafficChannelCallEvent.end(); + broadcast(mTrafficChannelCallEvent); mTrafficChannelEndListener.callEnd(mTrafficChannelCallEvent.getChannel()); + mTrafficChannelEndListener = null; + mTrafficChannelCallEvent = null; } } diff --git a/src/main/java/io/github/dsheirer/source/tuner/channel/TunerChannelSource.java b/src/main/java/io/github/dsheirer/source/tuner/channel/TunerChannelSource.java index c86ddf51..57b0abaf 100644 --- a/src/main/java/io/github/dsheirer/source/tuner/channel/TunerChannelSource.java +++ b/src/main/java/io/github/dsheirer/source/tuner/channel/TunerChannelSource.java @@ -300,6 +300,7 @@ public abstract class TunerChannelSource extends ComplexSource implements ISourc mScheduledFuture = null; + getHeartbeatManager().broadcast(); performDisposal(); } }