diff --git a/server/src/main/java/com/genymobile/scrcpy/CleanUp.java b/server/src/main/java/com/genymobile/scrcpy/CleanUp.java index 90de8c2c..352f7c6b 100644 --- a/server/src/main/java/com/genymobile/scrcpy/CleanUp.java +++ b/server/src/main/java/com/genymobile/scrcpy/CleanUp.java @@ -25,13 +25,13 @@ public final class CleanUp { private Thread thread; - private CleanUp(int displayId, Options options) { - thread = new Thread(() -> runCleanUp(displayId, options), "cleanup"); + private CleanUp(Options options) { + thread = new Thread(() -> runCleanUp(options), "cleanup"); thread.start(); } - public static CleanUp start(int displayId, Options options) { - return new CleanUp(displayId, options); + public static CleanUp start(Options options) { + return new CleanUp(options); } public void interrupt() { @@ -42,7 +42,7 @@ public final class CleanUp { thread.join(); } - private void runCleanUp(int displayId, Options options) { + private void runCleanUp(Options options) { boolean disableShowTouches = false; if (options.getShowTouches()) { try { @@ -93,6 +93,7 @@ public final class CleanUp { } boolean powerOffScreen = options.getPowerOffScreenOnClose(); + int displayId = options.getDisplayId(); try { run(displayId, restoreStayOn, disableShowTouches, powerOffScreen, restoreScreenOffTimeout); diff --git a/server/src/main/java/com/genymobile/scrcpy/Options.java b/server/src/main/java/com/genymobile/scrcpy/Options.java index e75321e6..54888827 100644 --- a/server/src/main/java/com/genymobile/scrcpy/Options.java +++ b/server/src/main/java/com/genymobile/scrcpy/Options.java @@ -479,6 +479,11 @@ public class Options { } } + if (options.newDisplay != null) { + assert options.displayId == 0 : "Must not set both displayId and newDisplay"; + options.displayId = Device.DISPLAY_ID_NONE; + } + return options; } diff --git a/server/src/main/java/com/genymobile/scrcpy/Server.java b/server/src/main/java/com/genymobile/scrcpy/Server.java index a093fdf0..d0a340da 100644 --- a/server/src/main/java/com/genymobile/scrcpy/Server.java +++ b/server/src/main/java/com/genymobile/scrcpy/Server.java @@ -103,11 +103,8 @@ public final class Server { CleanUp cleanUp = null; - NewDisplay newDisplay = options.getNewDisplay(); - int displayId = newDisplay == null ? options.getDisplayId() : Device.DISPLAY_ID_NONE; - if (options.getCleanup()) { - cleanUp = CleanUp.start(displayId, options); + cleanUp = CleanUp.start(options); } int scid = options.getScid(); @@ -131,7 +128,7 @@ public final class Server { if (control) { ControlChannel controlChannel = connection.getControlChannel(); - controller = new Controller(displayId, controlChannel, cleanUp, options.getClipboardAutosync(), options.getPowerOn()); + controller = new Controller(options.getDisplayId(), controlChannel, cleanUp, options.getClipboardAutosync(), options.getPowerOn()); asyncProcessors.add(controller); } @@ -161,11 +158,12 @@ public final class Server { options.getSendFrameMeta()); SurfaceCapture surfaceCapture; if (options.getVideoSource() == VideoSource.DISPLAY) { + NewDisplay newDisplay = options.getNewDisplay(); if (newDisplay != null) { surfaceCapture = new NewDisplayCapture(controller, newDisplay, options.getMaxSize()); } else { - assert displayId != Device.DISPLAY_ID_NONE; - surfaceCapture = new ScreenCapture(controller, displayId, options.getMaxSize(), options.getCrop(), + assert options.getDisplayId() != Device.DISPLAY_ID_NONE; + surfaceCapture = new ScreenCapture(controller, options.getDisplayId(), options.getMaxSize(), options.getCrop(), options.getLockVideoOrientation()); } } else {