mirror of
https://github.com/DSheirer/sdrtrunk.git
synced 2026-11-12 16:47:31 -05:00
Updates all reusable buffer queues to automatically set the user count
to 1 on all provided buffers by default.
This commit is contained in:
@@ -29,6 +29,7 @@ public abstract class AbstractReusableBufferQueue<T extends AbstractReusableBuff
|
||||
private Queue<T> mReusableBufferQueue = new LinkedTransferQueue<>();
|
||||
private int mBufferCount = 0;
|
||||
private String mDebugName;
|
||||
protected boolean mBufferCreationLoggingEnabled = true;
|
||||
|
||||
/**
|
||||
* Base queue for managing reusable buffers.
|
||||
@@ -89,6 +90,12 @@ public abstract class AbstractReusableBufferQueue<T extends AbstractReusableBuff
|
||||
protected void incrementBufferCount()
|
||||
{
|
||||
mBufferCount++;
|
||||
|
||||
if(mBufferCreationLoggingEnabled)
|
||||
{
|
||||
mLog.debug("Buffer Created - count:" + mBufferCount +
|
||||
" debug:" + (mDebugName != null ? mDebugName : "null") + " class:" + this.getClass());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -44,14 +44,13 @@ public class ReusableAudioPacketQueue extends AbstractReusableBufferQueue<Reusab
|
||||
if(buffer == null)
|
||||
{
|
||||
buffer = new ReusableAudioPacket(this, size);
|
||||
incrementBufferCount();
|
||||
|
||||
buffer.setDebugName("Owner:" + getDebugName());
|
||||
// mLog.debug("Buffer Created - Count:" + getBufferCount() + (getDebugName() != null ? " [" + getDebugName() + "]" : ""));
|
||||
incrementBufferCount();
|
||||
}
|
||||
|
||||
buffer.setType(ReusableAudioPacket.Type.AUDIO);
|
||||
buffer.resize(size);
|
||||
buffer.incrementUserCount();
|
||||
|
||||
return buffer;
|
||||
}
|
||||
|
||||
@@ -118,14 +118,6 @@ public class ReusableBuffer extends AbstractReusableBuffer
|
||||
*/
|
||||
public void reloadFrom(FloatBuffer floatBuffer, long timestamp)
|
||||
{
|
||||
if(mUserCount.get() > 0)
|
||||
{
|
||||
throw new IllegalStateException("New data cannot be loaded into this reusable buffer while the user count " +
|
||||
"is above zero - user count:" + mUserCount.get());
|
||||
}
|
||||
|
||||
mUserCount.set(0);
|
||||
|
||||
resize(floatBuffer.capacity());
|
||||
floatBuffer.rewind();
|
||||
floatBuffer.get(mSamples);
|
||||
|
||||
@@ -53,7 +53,6 @@ public class ReusableBufferAssembler implements RealSampleListener
|
||||
if(mCurrentBuffer == null)
|
||||
{
|
||||
mCurrentBuffer = mReusableBufferQueue.getBuffer(mBufferSize);
|
||||
mCurrentBuffer.incrementUserCount();
|
||||
mBufferPointer = 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -29,7 +29,8 @@ public class ReusableBufferQueue extends AbstractReusableBufferQueue<ReusableBuf
|
||||
|
||||
/**
|
||||
* Returns a reusable buffer from an internal recycling queue, or creates a new buffer if there are currently no
|
||||
* buffers available for reuse.
|
||||
* buffers available for reuse. The user count is set to one and must be managed throughout the lifecycle
|
||||
* of the buffer.
|
||||
*
|
||||
* @param size of the samples that will be loaded into the buffer
|
||||
* @return a reusable buffer
|
||||
@@ -41,13 +42,12 @@ public class ReusableBufferQueue extends AbstractReusableBufferQueue<ReusableBuf
|
||||
if(buffer == null)
|
||||
{
|
||||
buffer = new ReusableBuffer(this, new float[size]);
|
||||
incrementBufferCount();
|
||||
|
||||
buffer.setDebugName("Owner:" + getDebugName());
|
||||
// mLog.debug("Buffer Created - Count:" + getBufferCount() + (getDebugName() != null ? " [" + getDebugName() + "]" : ""));
|
||||
incrementBufferCount();
|
||||
}
|
||||
|
||||
buffer.resize(size);
|
||||
buffer.incrementUserCount();
|
||||
|
||||
return buffer;
|
||||
}
|
||||
|
||||
@@ -148,8 +148,6 @@ public class ReusableChannelResultsBuffer extends AbstractReusableBuffer
|
||||
}
|
||||
}
|
||||
|
||||
channelBuffer.incrementUserCount();
|
||||
|
||||
return channelBuffer;
|
||||
}
|
||||
|
||||
|
||||
@@ -44,12 +44,12 @@ public class ReusableChannelResultsBufferQueue extends AbstractReusableBufferQue
|
||||
if(buffer == null)
|
||||
{
|
||||
buffer = new ReusableChannelResultsBuffer(this);
|
||||
incrementBufferCount();
|
||||
|
||||
buffer.setDebugName("Owner:" + getDebugName());
|
||||
// mLog.debug("Buffer Created - Count:" + getBufferCount() + (getDebugName() != null ? " [" + getDebugName() + "]" : ""));
|
||||
incrementBufferCount();
|
||||
}
|
||||
|
||||
buffer.incrementUserCount();
|
||||
|
||||
return buffer;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -127,7 +127,6 @@ public class ReusableComplexBufferAssembler
|
||||
mBuffer.rewind();
|
||||
ReusableComplexBuffer reusableComplexBuffer = mReusableComplexBufferQueue.getBuffer(mBufferSize);
|
||||
reusableComplexBuffer.reloadFrom(mBuffer, mCurrentBufferTimestamp);
|
||||
reusableComplexBuffer.incrementUserCount();
|
||||
mListener.receive(reusableComplexBuffer);
|
||||
}
|
||||
|
||||
|
||||
@@ -52,13 +52,12 @@ public class ReusableComplexBufferQueue extends AbstractReusableBufferQueue<Reus
|
||||
if(buffer == null)
|
||||
{
|
||||
buffer = new ReusableComplexBuffer(this, new float[size]);
|
||||
incrementBufferCount();
|
||||
|
||||
buffer.setDebugName("Owner:" + getDebugName());
|
||||
// mLog.debug("Buffer Created - Count:" + getBufferCount() + (getDebugName() != null ? " [" + getDebugName() + "]" : ""));
|
||||
incrementBufferCount();
|
||||
}
|
||||
|
||||
buffer.resize(size);
|
||||
buffer.incrementUserCount();
|
||||
|
||||
return buffer;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user