summaryrefslogtreecommitdiff
path: root/core/java/android
diff options
context:
space:
mode:
Diffstat (limited to 'core/java/android')
-rw-r--r--core/java/android/os/FileBridge.java12
1 files changed, 9 insertions, 3 deletions
diff --git a/core/java/android/os/FileBridge.java b/core/java/android/os/FileBridge.java
index 7b84575a8955..9dcdbf93f296 100644
--- a/core/java/android/os/FileBridge.java
+++ b/core/java/android/os/FileBridge.java
@@ -32,6 +32,7 @@ import libcore.io.Streams;
import java.io.FileDescriptor;
import java.io.IOException;
import java.io.OutputStream;
+import java.nio.ByteBuffer;
import java.nio.ByteOrder;
/**
@@ -95,9 +96,11 @@ public class FileBridge extends Thread {
@Override
public void run() {
- final byte[] temp = new byte[8192];
+ final ByteBuffer tempBuffer = ByteBuffer.allocateDirect(8192);
+ final byte[] temp = tempBuffer.hasArray() ? tempBuffer.array() : new byte[8192];
try {
- while (IoBridge.read(mServer.getFileDescriptor(), temp, 0, MSG_LENGTH) == MSG_LENGTH) {
+ while (IoBridge.read(mServer.getFileDescriptor(), temp,
+ 0, MSG_LENGTH) == MSG_LENGTH) {
final int cmd = Memory.peekInt(temp, 0, ByteOrder.BIG_ENDIAN);
if (cmd == CMD_WRITE) {
// Shuttle data into local file
@@ -138,7 +141,10 @@ public class FileBridge extends Thread {
public static class FileBridgeOutputStream extends OutputStream {
private final ParcelFileDescriptor mClientPfd;
private final FileDescriptor mClient;
- private final byte[] mTemp = new byte[MSG_LENGTH];
+ private final ByteBuffer mTempBuffer = ByteBuffer.allocateDirect(MSG_LENGTH);
+ private final byte[] mTemp = mTempBuffer.hasArray()
+ ? mTempBuffer.array()
+ : new byte[MSG_LENGTH];
public FileBridgeOutputStream(ParcelFileDescriptor clientPfd) {
mClientPfd = clientPfd;