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

Commit b87d2cd3 authored by Nikolas Havrikov's avatar Nikolas Havrikov
Browse files

Only wait for successful vibration

Currently, the device sleeps for 500ms even if no
vibrator is available, such as on a TV device.
This CL ensures the sleep happens only if the vibration
is happening successfully.

MUST_SLEEP because this is just moving already exiting code.

Test: atest FrameworksServicesTests:VibratorManagerServiceTest
Bug: 276697207
Change-Id: I14182e43ad1fe08c2276be7988f2ac1fb3d79634
parent e79fe3fc
Loading
Loading
Loading
Loading
+13 −9
Original line number Diff line number Diff line
@@ -699,20 +699,24 @@ public final class ShutdownThread extends Thread {
            // vibrate before shutting down
            Vibrator vibrator = new SystemVibrator(context);
            try {
                if (vibrator.hasVibrator()) {
                    vibrator.vibrate(
                            VibrationEffect.createOneShot(
                                    SHUTDOWN_VIBRATE_MS, VibrationEffect.DEFAULT_AMPLITUDE),
                            VibrationAttributes.createForUsage(VibrationAttributes.USAGE_TOUCH));
            } catch (Exception e) {
                // Failure to vibrate shouldn't interrupt shutdown.  Just log it.
                Log.w(TAG, "Failed to vibrate during shutdown.", e);
            }

            // vibrator is asynchronous so we need to wait to avoid shutting down too soon.
                    // vibrator is asynchronous so we have to wait to avoid shutting down too soon.
                    try {
                        Thread.sleep(SHUTDOWN_VIBRATE_MS);
                    } catch (InterruptedException unused) {
                        // this is not critical and does not require logging.
                    }
                }
            } catch (Exception e) {
                // Failure to vibrate shouldn't interrupt shutdown.  Just log it.
                Log.w(TAG, "Failed to vibrate during shutdown.", e);
            }

        }
        // Shutdown power
        Log.i(TAG, "Performing low-level shutdown...");