mirror of
https://github.com/DSheirer/sdrtrunk.git
synced 2026-11-14 01:27:34 -05:00
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:
@@ -626,7 +626,6 @@ public class DMRConfigurationEditor extends ChannelConfigurationEditor
|
|||||||
config = new DecodeConfigDMR();
|
config = new DecodeConfigDMR();
|
||||||
}
|
}
|
||||||
|
|
||||||
// config.setChannelRotationDelay(getChannelRotationDelaySpinner().getValue());
|
|
||||||
config.setIgnoreCRCChecksums(getIgnoreCRCChecksumsButton().isSelected());
|
config.setIgnoreCRCChecksums(getIgnoreCRCChecksumsButton().isSelected());
|
||||||
config.setIgnoreDataCalls(getIgnoreDataCallsButton().isSelected());
|
config.setIgnoreDataCalls(getIgnoreDataCallsButton().isSelected());
|
||||||
config.setTrafficChannelPoolSize(getTrafficChannelPoolSizeSpinner().getValue());
|
config.setTrafficChannelPoolSize(getTrafficChannelPoolSizeSpinner().getValue());
|
||||||
|
|||||||
@@ -149,12 +149,14 @@ public class ReusableComplexBufferAssembler
|
|||||||
*/
|
*/
|
||||||
public void flush()
|
public void flush()
|
||||||
{
|
{
|
||||||
if(mListener != null && mBuffer.position() > 0)
|
Listener<ReusableComplexBuffer> listener = mListener;
|
||||||
|
|
||||||
|
if(listener != null && mBuffer.position() > 0)
|
||||||
{
|
{
|
||||||
mBuffer.rewind();
|
mBuffer.rewind();
|
||||||
ReusableComplexBuffer reusableComplexBuffer = mReusableComplexBufferQueue.getBuffer(mBufferSize);
|
ReusableComplexBuffer reusableComplexBuffer = mReusableComplexBufferQueue.getBuffer(mBufferSize);
|
||||||
reusableComplexBuffer.reloadFrom(mBuffer, mCurrentBufferTimestamp);
|
reusableComplexBuffer.reloadFrom(mBuffer, mCurrentBufferTimestamp);
|
||||||
mListener.receive(reusableComplexBuffer);
|
listener.receive(reusableComplexBuffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
mBuffer.rewind();
|
mBuffer.rewind();
|
||||||
|
|||||||
Reference in New Issue
Block a user