From 28bc02e17245e987e9c2ce32acb43100703db652 Mon Sep 17 00:00:00 2001 From: Denny Date: Wed, 19 Sep 2018 04:25:37 -0400 Subject: [PATCH] Updates channel state to ensure teardown processing is completed during a call end and/or during a commanded stop. --- .../dsheirer/channel/state/ChannelState.java | 21 ++++++------------- .../tuner/channel/TunerChannelSource.java | 1 + 2 files changed, 7 insertions(+), 15 deletions(-) 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(); } }