diff --git a/server/src/main/java/com/genymobile/scrcpy/CleanUp.java b/server/src/main/java/com/genymobile/scrcpy/CleanUp.java index 74555636b4..2ae2d03d90 100644 --- a/server/src/main/java/com/genymobile/scrcpy/CleanUp.java +++ b/server/src/main/java/com/genymobile/scrcpy/CleanUp.java @@ -19,18 +19,19 @@ private CleanUp() { // not instantiable } - public static void configure(boolean disableShowTouches, int restoreStayOn) throws IOException { - boolean needProcess = disableShowTouches || restoreStayOn != -1; + public static void configure(boolean disableShowTouches, int restoreStayOn, boolean scheduleScreenOn) throws IOException { + boolean needProcess = disableShowTouches || restoreStayOn != -1 || scheduleScreenOn; if (needProcess) { - startProcess(disableShowTouches, restoreStayOn); + startProcess(disableShowTouches, restoreStayOn, scheduleScreenOn); } else { // There is no additional clean up to do when scrcpy dies unlinkSelf(); } } - private static void startProcess(boolean disableShowTouches, int restoreStayOn) throws IOException { - String[] cmd = {"app_process", "/", CleanUp.class.getName(), String.valueOf(disableShowTouches), String.valueOf(restoreStayOn)}; + private static void startProcess(boolean disableShowTouches, int restoreStayOn, boolean scheduleScreenOn) throws IOException { + String[] cmd = {"app_process", "/", CleanUp.class.getName(), String.valueOf(disableShowTouches), + String.valueOf(restoreStayOn), String.valueOf(scheduleScreenOn)}; ProcessBuilder builder = new ProcessBuilder(cmd); builder.environment().put("CLASSPATH", SERVER_PATH); @@ -59,8 +60,9 @@ public static void main(String... args) { boolean disableShowTouches = Boolean.parseBoolean(args[0]); int restoreStayOn = Integer.parseInt(args[1]); + boolean scheduleScreenOn = Boolean.parseBoolean(args[2]); - if (disableShowTouches || restoreStayOn != -1) { + if (disableShowTouches || restoreStayOn != -1 || scheduleScreenOn) { ServiceManager serviceManager = new ServiceManager(); try (ContentProvider settings = serviceManager.getActivityManager().createSettingsProvider()) { if (disableShowTouches) { @@ -72,6 +74,10 @@ public static void main(String... args) { settings.putValue(ContentProvider.TABLE_GLOBAL, "stay_on_while_plugged_in", String.valueOf(restoreStayOn)); } } + if (scheduleScreenOn) { + Ln.i("Restoring \"displayPowerMode\""); + new Device(new Options()).setScreenPowerMode(Device.POWER_MODE_NORMAL); + } } } } diff --git a/server/src/main/java/com/genymobile/scrcpy/Server.java b/server/src/main/java/com/genymobile/scrcpy/Server.java index 44b3afd40f..d257e3196e 100644 --- a/server/src/main/java/com/genymobile/scrcpy/Server.java +++ b/server/src/main/java/com/genymobile/scrcpy/Server.java @@ -49,7 +49,7 @@ private static void scrcpy(Options options) throws IOException { } } - CleanUp.configure(mustDisableShowTouchesOnCleanUp, restoreStayOn); + CleanUp.configure(mustDisableShowTouchesOnCleanUp, restoreStayOn, true); boolean tunnelForward = options.isTunnelForward();