Compare commits
3 Commits
mainlooper
...
compare_ve
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f24d488ca2 | ||
|
|
6996cbf5d3 | ||
|
|
e282100d0b |
@@ -218,6 +218,7 @@ event_loop(bool display, bool control) {
|
||||
case EVENT_RESULT_STOPPED_BY_USER:
|
||||
return true;
|
||||
case EVENT_RESULT_STOPPED_BY_EOS:
|
||||
LOGW("Device disconnected");
|
||||
return false;
|
||||
case EVENT_RESULT_CONTINUE:
|
||||
break;
|
||||
|
||||
@@ -131,6 +131,7 @@ execute_server(struct server *server, const struct server_params *params) {
|
||||
#endif
|
||||
"/", // unused
|
||||
"com.genymobile.scrcpy.Server",
|
||||
SCRCPY_VERSION,
|
||||
max_size_string,
|
||||
bit_rate_string,
|
||||
server->tunnel_forward ? "true" : "false",
|
||||
|
||||
@@ -56,8 +56,13 @@ public class ScreenEncoder implements Device.RotationListener {
|
||||
|
||||
public void streamScreen(Device device, FileDescriptor fd) throws IOException {
|
||||
// Some devices internally create a Handler when creating an input Surface, causing an exception:
|
||||
// "Can't create handler inside thread that has not called Looper.prepare()"
|
||||
// "Can't create handler inside thread that has not called Looper.prepare()"
|
||||
// <https://github.com/Genymobile/scrcpy/issues/240>
|
||||
//
|
||||
// Use Looper.prepareMainLooper() instead of Looper.prepare() to avoid a NullPointerException:
|
||||
// "Attempt to read from field 'android.os.MessageQueue android.os.Looper.mQueue'
|
||||
// on a null object reference"
|
||||
// <https://github.com/Genymobile/scrcpy/issues/921>
|
||||
Looper.prepareMainLooper();
|
||||
|
||||
MediaFormat format = createFormat(bitRate, frameRate, iFrameInterval);
|
||||
|
||||
@@ -67,29 +67,39 @@ public final class Server {
|
||||
|
||||
@SuppressWarnings("checkstyle:MagicNumber")
|
||||
private static Options createOptions(String... args) {
|
||||
if (args.length != 6) {
|
||||
throw new IllegalArgumentException("Expecting 6 parameters");
|
||||
if (args.length < 1) {
|
||||
throw new IllegalArgumentException("Missing client version");
|
||||
}
|
||||
|
||||
String clientVersion = args[0];
|
||||
if (!clientVersion.equals(BuildConfig.VERSION_NAME)) {
|
||||
throw new IllegalArgumentException("The server version (" + clientVersion + ") does not match the client "
|
||||
+ "(" + BuildConfig.VERSION_NAME + ")");
|
||||
}
|
||||
|
||||
if (args.length != 7) {
|
||||
throw new IllegalArgumentException("Expecting 7 parameters");
|
||||
}
|
||||
|
||||
Options options = new Options();
|
||||
|
||||
int maxSize = Integer.parseInt(args[0]) & ~7; // multiple of 8
|
||||
int maxSize = Integer.parseInt(args[1]) & ~7; // multiple of 8
|
||||
options.setMaxSize(maxSize);
|
||||
|
||||
int bitRate = Integer.parseInt(args[1]);
|
||||
int bitRate = Integer.parseInt(args[2]);
|
||||
options.setBitRate(bitRate);
|
||||
|
||||
// use "adb forward" instead of "adb tunnel"? (so the server must listen)
|
||||
boolean tunnelForward = Boolean.parseBoolean(args[2]);
|
||||
boolean tunnelForward = Boolean.parseBoolean(args[3]);
|
||||
options.setTunnelForward(tunnelForward);
|
||||
|
||||
Rect crop = parseCrop(args[3]);
|
||||
Rect crop = parseCrop(args[4]);
|
||||
options.setCrop(crop);
|
||||
|
||||
boolean sendFrameMeta = Boolean.parseBoolean(args[4]);
|
||||
boolean sendFrameMeta = Boolean.parseBoolean(args[5]);
|
||||
options.setSendFrameMeta(sendFrameMeta);
|
||||
|
||||
boolean control = Boolean.parseBoolean(args[5]);
|
||||
boolean control = Boolean.parseBoolean(args[6]);
|
||||
options.setControl(control);
|
||||
|
||||
return options;
|
||||
|
||||
Reference in New Issue
Block a user