diff options
author | Erik De Rijcke <Erik.De.Rijcke@prodatamobility.com> | 2015-03-17 14:51:20 +0100 |
---|---|---|
committer | Erik De Rijcke <Erik.De.Rijcke@prodatamobility.com> | 2015-03-17 14:51:20 +0100 |
commit | e2864d7a12f1a19ff28d5393253d67babae41ee9 (patch) | |
tree | 737347a4af2a9526a77afb6526f215e350efeb0d | |
parent | 810a20622124917792a0ea637fadf3994504c596 (diff) |
don't allow bufferpool usage when it is destroyed
-rw-r--r-- | examples/src/main/java/examples/Buffer.java | 6 | ||||
-rw-r--r-- | examples/src/main/java/examples/BufferPool.java | 23 |
2 files changed, 21 insertions, 8 deletions
diff --git a/examples/src/main/java/examples/Buffer.java b/examples/src/main/java/examples/Buffer.java index d24afe3..f50b749 100644 --- a/examples/src/main/java/examples/Buffer.java +++ b/examples/src/main/java/examples/Buffer.java @@ -22,7 +22,11 @@ public class Buffer implements WlBufferEvents { @Override public void release(final WlBufferProxy emitter) { - bufferPool.queueBuffer(emitter); + if(bufferPool.isDestroyed()){ + emitter.destroy(); + }else { + bufferPool.queueBuffer(emitter); + } } public ByteBuffer getByteBuffer() { diff --git a/examples/src/main/java/examples/BufferPool.java b/examples/src/main/java/examples/BufferPool.java index db1d109..288290f 100644 --- a/examples/src/main/java/examples/BufferPool.java +++ b/examples/src/main/java/examples/BufferPool.java @@ -11,26 +11,35 @@ public class BufferPool implements WlShmPoolEvents{ private LinkedList<WlBufferProxy> bufferQueue = new LinkedList<WlBufferProxy>(); private boolean destroyed; - - public BufferPool() { - } - public void queueBuffer(WlBufferProxy buffer){ if(destroyed){ - buffer.destroy(); - }else { - this.bufferQueue.add(buffer); + throw new IllegalStateException("Pool destroyed"); } + + this.bufferQueue.add(buffer); } public WlBufferProxy popBuffer(){ + if(destroyed){ + throw new IllegalStateException("Pool destroyed"); + } + return bufferQueue.pop(); } public void destroy(){ + if(destroyed){ + throw new IllegalStateException("Pool destroyed"); + } + for (WlBufferProxy wlBufferProxy : bufferQueue) { wlBufferProxy.destroy(); } + bufferQueue.clear(); this.destroyed = true; } + + public boolean isDestroyed() { + return destroyed; + } } |