diff --git a/src/main/java/mpo/dayon/common/buffer/MemByteBuffer.java b/src/main/java/mpo/dayon/common/buffer/MemByteBuffer.java
index 76c05733..7c5fd11b 100644
--- a/src/main/java/mpo/dayon/common/buffer/MemByteBuffer.java
+++ b/src/main/java/mpo/dayon/common/buffer/MemByteBuffer.java
@@ -10,7 +10,6 @@ public class MemByteBuffer extends OutputStream {
private static final int DEFAULT_INITIAL_CAPACITY = 32;
private byte[] buffer;
-
private int count;
public MemByteBuffer() {
@@ -26,8 +25,8 @@ private MemByteBuffer(int capacity) {
* the newly created buffer is adopting that byte array (!)
*/
public MemByteBuffer(byte[] data) {
- buffer = data.clone();
count = data.length;
+ buffer = Arrays.copyOf(data, count);
}
public int size() {
@@ -35,7 +34,7 @@ public int size() {
}
public byte[] getInternal() {
- return buffer.clone();
+ return Arrays.copyOf(buffer, count);
}
public int mark() {
@@ -53,8 +52,8 @@ private void resetToMark(int mark) {
* b
. The 24 high-order bits of b
are ignored.
*/
@Override
- public void write(int val) {
- increaseBuffer(count + 1);
+ public void write(int val) {
+ ensureCapacity(count + 1);
buffer[count++] = (byte) val;
}
@@ -62,25 +61,24 @@ public void write(int val) {
* @see #write(int)
*/
private void write(int val1, int val2) {
- increaseBuffer(count + 2);
+ ensureCapacity(count + 2);
buffer[count++] = (byte) val1;
buffer[count++] = (byte) val2;
}
@Override
- public void write(byte[] buffer) {
+ public void write(byte[] buffer) {
write(buffer, 0, buffer.length);
}
@Override
- public void write(byte[] buffer, int off, int len) {
+ public void write(byte[] buffer, int off, int len) {
if (len == 0) {
return;
}
- final int newCount = count + len;
- increaseBuffer(newCount);
+ ensureCapacity(count + len);
System.arraycopy(buffer, off, this.buffer, count, len);
- count = newCount;
+ count += len;
}
/**
@@ -107,22 +105,20 @@ public void writeLenAsShort(int mark) {
}
public void fill(int len, int val) {
- final int newCount = count + len;
- increaseBuffer(newCount);
- Arrays.fill(buffer, count, newCount, (byte) val);
- count = newCount;
+ ensureCapacity(count + len);
+ Arrays.fill(buffer, count, count + len, (byte) val);
+ count += len;
}
public void arraycopy(byte[] in, int start, int len) {
- final int newCount = count + len;
- increaseBuffer(newCount);
+ ensureCapacity(count + len);
System.arraycopy(in, start, buffer, count, len);
- count = newCount;
+ count += len;
}
- private void increaseBuffer(int newCount) {
+ private void ensureCapacity(int newCount) {
if (newCount > buffer.length) {
buffer = Arrays.copyOf(buffer, Math.max(buffer.length << 1, newCount));
}
}
-}
+}
\ No newline at end of file
diff --git a/src/main/java/mpo/dayon/common/capture/Capture.java b/src/main/java/mpo/dayon/common/capture/Capture.java
index 869467ec..2eca2d96 100644
--- a/src/main/java/mpo/dayon/common/capture/Capture.java
+++ b/src/main/java/mpo/dayon/common/capture/Capture.java
@@ -129,7 +129,7 @@ public void mergeDirtyTiles(Capture[] olders) {
}
skipped.addAndGet(xskipped);
merged.set(1 + xmerged);
- Log.warn(String.format("Merged [id:%d] [count:%d] [skipped:%d][merged:%d]", id, olders.length, skipped.get(), merged.get()));
+ Log.warn(String.format("Merged [id:%d][count:%d][skipped:%d][merged:%d]", id, olders.length, skipped.get(), merged.get()));
}
/**
@@ -163,9 +163,7 @@ private void doMergeDirtyTiles(Capture older) {
*/
public AbstractMap.SimpleEntry createBufferedImage(byte[] prevBuffer, int prevWidth, int prevHeight) {
final boolean isGray = stream(dirty)
- .parallel()
- .filter(Objects::nonNull)
- .anyMatch(tile -> tile.getCapture().size() == tile.getWidth() * tile.getHeight());
+ .anyMatch(tile -> tile != null && tile.getCapture().size() == tile.getWidth() * tile.getHeight());
return isGray ? createBufferedMonochromeImage(prevBuffer, prevWidth, prevHeight) : createBufferedColorImage(prevBuffer, prevWidth, prevHeight);
}