Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fc0b9e23 authored by Keun-young Park's avatar Keun-young Park Committed by android-build-merger
Browse files

Merge "ignore RemoteException from pm if shutdown is already on-going" into oc-dev

am: cae7db3c

Change-Id: I181bce3b7e3defd37db9d4ad04f46d41fcd93559
parents bf5d13c1 cae7db3c
Loading
Loading
Loading
Loading
+13 −2
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import android.os.IPowerManager;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.os.SystemClock;
import android.os.SystemProperties;

public class PowerCommand extends Svc.Command {
    public PowerCommand() {
@@ -87,7 +88,7 @@ public class PowerCommand extends Svc.Command {
                        // no confirm, wait till device is rebooted
                        pm.reboot(false, mode, true);
                    } catch (RemoteException e) {
                        System.err.println("Failed to reboot.");
                        maybeLogRemoteException("Failed to reboot.");
                    }
                    return;
                } else if ("shutdown".equals(args[1])) {
@@ -95,7 +96,7 @@ public class PowerCommand extends Svc.Command {
                        // no confirm, wait till device is off
                        pm.shutdown(false, null, true);
                    } catch (RemoteException e) {
                        System.err.println("Failed to shutdown.");
                        maybeLogRemoteException("Failed to shutdown.");
                    }
                    return;
                }
@@ -103,4 +104,14 @@ public class PowerCommand extends Svc.Command {
        }
        System.err.println(longHelp());
    }

    // Check if remote exception is benign during shutdown. Pm can be killed
    // before system server during shutdown, so remote exception can be ignored
    // if it is already in shutdown flow.
    private void maybeLogRemoteException(String msg) {
        String powerProp = SystemProperties.get("sys.powerctl");
        if (powerProp.isEmpty()) {
            System.err.println(msg);
        }
    }
}