Updates all reusable buffer queues to automatically set the user count

to 1 on all provided buffers by default.
This commit is contained in:
Denny
2018-07-01 07:08:52 -04:00
parent 0051a1d381
commit e88944e53d
36 changed files with 18 additions and 55 deletions

View File

@@ -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());
}
}
/**

View File

@@ -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;
}

View File

@@ -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);

View File

@@ -53,7 +53,6 @@ public class ReusableBufferAssembler implements RealSampleListener
if(mCurrentBuffer == null)
{
mCurrentBuffer = mReusableBufferQueue.getBuffer(mBufferSize);
mCurrentBuffer.incrementUserCount();
mBufferPointer = 0;
}

View File

@@ -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;
}

View File

@@ -148,8 +148,6 @@ public class ReusableChannelResultsBuffer extends AbstractReusableBuffer
}
}
channelBuffer.incrementUserCount();
return channelBuffer;
}

View File

@@ -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;
}
}

View File

@@ -127,7 +127,6 @@ public class ReusableComplexBufferAssembler
mBuffer.rewind();
ReusableComplexBuffer reusableComplexBuffer = mReusableComplexBufferQueue.getBuffer(mBufferSize);
reusableComplexBuffer.reloadFrom(mBuffer, mCurrentBufferTimestamp);
reusableComplexBuffer.incrementUserCount();
mListener.receive(reusableComplexBuffer);
}

View File

@@ -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;
}