Resolves multi-threading issue in buffer assembler where sample listener is nullified while buffer processing is still in process. (#1005)

Co-authored-by: Denny <denny@denny-desktop>
This commit is contained in:
Denny Sheirer
2020-12-01 04:06:03 -05:00
committed by GitHub
parent 67702096d7
commit f0d9ef99ea
2 changed files with 4 additions and 3 deletions

View File

@@ -626,7 +626,6 @@ public class DMRConfigurationEditor extends ChannelConfigurationEditor
config = new DecodeConfigDMR();
}
// config.setChannelRotationDelay(getChannelRotationDelaySpinner().getValue());
config.setIgnoreCRCChecksums(getIgnoreCRCChecksumsButton().isSelected());
config.setIgnoreDataCalls(getIgnoreDataCallsButton().isSelected());
config.setTrafficChannelPoolSize(getTrafficChannelPoolSizeSpinner().getValue());

View File

@@ -149,12 +149,14 @@ public class ReusableComplexBufferAssembler
*/
public void flush()
{
if(mListener != null && mBuffer.position() > 0)
Listener<ReusableComplexBuffer> listener = mListener;
if(listener != null && mBuffer.position() > 0)
{
mBuffer.rewind();
ReusableComplexBuffer reusableComplexBuffer = mReusableComplexBufferQueue.getBuffer(mBufferSize);
reusableComplexBuffer.reloadFrom(mBuffer, mCurrentBufferTimestamp);
mListener.receive(reusableComplexBuffer);
listener.receive(reusableComplexBuffer);
}
mBuffer.rewind();