Simplify IO.writeFully() for Android >= 6
Do not handle buffer properties manually for Android >= 6 (where it is
already handled by Os.write()).
Refs <d9f7e57f5d
%5E%21/>
This commit is contained in:
parent
79014143b9
commit
e724ff4349
@ -2,6 +2,7 @@ package com.genymobile.scrcpy.util;
|
||||
|
||||
import com.genymobile.scrcpy.BuildConfig;
|
||||
|
||||
import android.os.Build;
|
||||
import android.system.ErrnoException;
|
||||
import android.system.Os;
|
||||
import android.system.OsConstants;
|
||||
@ -30,6 +31,11 @@ public final class IO {
|
||||
}
|
||||
|
||||
public static void writeFully(FileDescriptor fd, ByteBuffer from) throws IOException {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
while (from.hasRemaining()) {
|
||||
write(fd, from);
|
||||
}
|
||||
} else {
|
||||
// ByteBuffer position is not updated as expected by Os.write() on old Android versions, so
|
||||
// handle the position and the remaining bytes manually.
|
||||
// See <https://github.com/Genymobile/scrcpy/issues/291>.
|
||||
@ -46,6 +52,7 @@ public final class IO {
|
||||
from.position(position);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void writeFully(FileDescriptor fd, byte[] buffer, int offset, int len) throws IOException {
|
||||
writeFully(fd, ByteBuffer.wrap(buffer, offset, len));
|
||||
|
Loading…
x
Reference in New Issue
Block a user