Loading core/java/android/os/SystemVibratorManager.java +8 −7 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ package android.os; import static android.os.Trace.TRACE_TAG_VIBRATOR; import android.annotation.CallbackExecutor; import android.annotation.NonNull; import android.annotation.Nullable; Loading Loading @@ -138,14 +140,14 @@ public class SystemVibratorManager extends VibratorManager { Log.w(TAG, "Failed to vibrate; no vibrator manager service."); return; } Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "vibrate, reason=" + reason); Trace.traceBegin(TRACE_TAG_VIBRATOR, "vibrate"); try { mService.vibrate(uid, mContext.getDeviceId(), opPkg, effect, attributes, reason, mToken); } catch (RemoteException e) { Log.w(TAG, "Failed to vibrate.", e); } finally { Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR); Trace.traceEnd(TRACE_TAG_VIBRATOR); } } Loading @@ -155,14 +157,14 @@ public class SystemVibratorManager extends VibratorManager { Log.w(TAG, "Failed to perform haptic feedback; no vibrator manager service."); return; } Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "performHapticFeedback, reason=" + reason); Trace.traceBegin(TRACE_TAG_VIBRATOR, "performHapticFeedback"); try { mService.performHapticFeedback(mUid, mContext.getDeviceId(), mPackageName, constant, reason, flags, privFlags); } catch (RemoteException e) { Log.w(TAG, "Failed to perform haptic feedback.", e); } finally { Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR); Trace.traceEnd(TRACE_TAG_VIBRATOR); } } Loading @@ -174,15 +176,14 @@ public class SystemVibratorManager extends VibratorManager { + " no vibrator manager service."); return; } Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "performHapticFeedbackForInputDevice, reason=" + reason); Trace.traceBegin(TRACE_TAG_VIBRATOR, "performHapticFeedbackForInputDevice"); try { mService.performHapticFeedbackForInputDevice(mUid, mContext.getDeviceId(), mPackageName, constant, inputDeviceId, inputSource, reason, flags, privFlags); } catch (RemoteException e) { Log.w(TAG, "Failed to perform haptic feedback for input device.", e); } finally { Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR); Trace.traceEnd(TRACE_TAG_VIBRATOR); } } Loading services/core/java/com/android/server/vibrator/VibrationThread.java +8 −6 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ package com.android.server.vibrator; import static android.os.Trace.TRACE_TAG_VIBRATOR; import android.annotation.NonNull; import android.annotation.Nullable; import android.os.PowerManager; Loading Loading @@ -117,7 +119,7 @@ final class VibrationThread extends Thread { * before the release callback. */ boolean runVibrationOnVibrationThread(VibrationStepConductor conductor) { Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "runVibrationOnVibrationThread"); Trace.traceBegin(TRACE_TAG_VIBRATOR, "runVibrationOnVibrationThread"); try { synchronized (mLock) { if (mRequestedActiveConductor != null) { Loading @@ -129,7 +131,7 @@ final class VibrationThread extends Thread { } return true; } finally { Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR); Trace.traceEnd(TRACE_TAG_VIBRATOR); } } Loading Loading @@ -249,17 +251,17 @@ final class VibrationThread extends Thread { private void clientVibrationCompleteIfNotAlready(@NonNull Vibration.EndInfo vibrationEndInfo) { if (!mCalledVibrationCompleteCallback) { mCalledVibrationCompleteCallback = true; Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "notifyVibrationComplete"); Trace.traceBegin(TRACE_TAG_VIBRATOR, "notifyVibrationComplete"); try { mExecutingConductor.notifyVibrationComplete(vibrationEndInfo); } finally { Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR); Trace.traceEnd(TRACE_TAG_VIBRATOR); } } } private void playVibration() { Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "playVibration"); Trace.traceBegin(TRACE_TAG_VIBRATOR, "playVibration"); try { mExecutingConductor.prepareToStart(); while (!mExecutingConductor.isFinished()) { Loading @@ -283,7 +285,7 @@ final class VibrationThread extends Thread { } } } finally { Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR); Trace.traceEnd(TRACE_TAG_VIBRATOR); } } } services/core/java/com/android/server/vibrator/VibratorController.java +26 −22 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ package com.android.server.vibrator; import static android.os.Trace.TRACE_TAG_VIBRATOR; import android.annotation.Nullable; import android.hardware.vibrator.IVibrator; import android.os.Binder; Loading Loading @@ -124,7 +126,7 @@ final class VibratorController { /** Reruns the query to the vibrator to load the {@link VibratorInfo}, if not yet successful. */ public void reloadVibratorInfoIfNeeded() { Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "VibratorController#reloadVibratorInfoIfNeeded"); Trace.traceBegin(TRACE_TAG_VIBRATOR, "VibratorController#reloadVibratorInfoIfNeeded"); try { // Early check outside lock, for quick return. if (mVibratorInfoLoadSuccessful) { Loading @@ -143,7 +145,7 @@ final class VibratorController { } } } finally { Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR); Trace.traceEnd(TRACE_TAG_VIBRATOR); } } Loading Loading @@ -199,13 +201,13 @@ final class VibratorController { /** Return {@code true} if the underlying vibrator is currently available, false otherwise. */ public boolean isAvailable() { Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "VibratorController#isAvailable"); Trace.traceBegin(TRACE_TAG_VIBRATOR, "VibratorController#isAvailable"); try { synchronized (mLock) { return mNativeWrapper.isAvailable(); } } finally { Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR); Trace.traceEnd(TRACE_TAG_VIBRATOR); } } Loading @@ -215,7 +217,9 @@ final class VibratorController { * <p>This will affect the state of {@link #isUnderExternalControl()}. */ public void setExternalControl(boolean externalControl) { Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "setExternalControl(" + externalControl + ")"); Trace.traceBegin(TRACE_TAG_VIBRATOR, externalControl ? "VibratorController#enableExternalControl" : "VibratorController#disableExternalControl"); try { if (!mVibratorInfo.hasCapability(IVibrator.CAP_EXTERNAL_CONTROL)) { return; Loading @@ -225,7 +229,7 @@ final class VibratorController { mNativeWrapper.setExternalControl(externalControl); } } finally { Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR); Trace.traceEnd(TRACE_TAG_VIBRATOR); } } Loading @@ -234,7 +238,7 @@ final class VibratorController { * if given {@code effect} is {@code null}. */ public void updateAlwaysOn(int id, @Nullable PrebakedSegment prebaked) { Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "VibratorController#updateAlwaysOn"); Trace.traceBegin(TRACE_TAG_VIBRATOR, "VibratorController#updateAlwaysOn"); try { if (!mVibratorInfo.hasCapability(IVibrator.CAP_ALWAYS_ON_CONTROL)) { return; Loading @@ -248,13 +252,13 @@ final class VibratorController { } } } finally { Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR); Trace.traceEnd(TRACE_TAG_VIBRATOR); } } /** Set the vibration amplitude. This will NOT affect the state of {@link #isVibrating()}. */ public void setAmplitude(float amplitude) { Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "VibratorController#setAmplitude"); Trace.traceBegin(TRACE_TAG_VIBRATOR, "VibratorController#setAmplitude"); try { synchronized (mLock) { if (mVibratorInfo.hasCapability(IVibrator.CAP_AMPLITUDE_CONTROL)) { Loading @@ -265,7 +269,7 @@ final class VibratorController { } } } finally { Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR); Trace.traceEnd(TRACE_TAG_VIBRATOR); } } Loading @@ -279,7 +283,7 @@ final class VibratorController { * do not support the input or a negative number if the operation failed. */ public long on(long milliseconds, long vibrationId) { Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "VibratorController#on"); Trace.traceBegin(TRACE_TAG_VIBRATOR, "VibratorController#on"); try { synchronized (mLock) { long duration = mNativeWrapper.on(milliseconds, vibrationId); Loading @@ -290,7 +294,7 @@ final class VibratorController { return duration; } } finally { Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR); Trace.traceEnd(TRACE_TAG_VIBRATOR); } } Loading @@ -304,7 +308,7 @@ final class VibratorController { * do not support the input or a negative number if the operation failed. */ public long on(VibrationEffect.VendorEffect vendorEffect, long vibrationId) { Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "VibratorController#on (vendor)"); Trace.traceBegin(TRACE_TAG_VIBRATOR, "VibratorController#on (vendor)"); synchronized (mLock) { Parcel vendorData = Parcel.obtain(); try { Loading @@ -320,7 +324,7 @@ final class VibratorController { return duration; } finally { vendorData.recycle(); Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR); Trace.traceEnd(TRACE_TAG_VIBRATOR); } } } Loading @@ -335,7 +339,7 @@ final class VibratorController { * do not support the input or a negative number if the operation failed. */ public long on(PrebakedSegment prebaked, long vibrationId) { Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "VibratorController#on (Prebaked)"); Trace.traceBegin(TRACE_TAG_VIBRATOR, "VibratorController#on (Prebaked)"); try { synchronized (mLock) { long duration = mNativeWrapper.perform(prebaked.getEffectId(), Loading @@ -347,7 +351,7 @@ final class VibratorController { return duration; } } finally { Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR); Trace.traceEnd(TRACE_TAG_VIBRATOR); } } Loading @@ -361,7 +365,7 @@ final class VibratorController { * do not support the input or a negative number if the operation failed. */ public long on(PrimitiveSegment[] primitives, long vibrationId) { Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "VibratorController#on (Primitive)"); Trace.traceBegin(TRACE_TAG_VIBRATOR, "VibratorController#on (Primitive)"); try { if (!mVibratorInfo.hasCapability(IVibrator.CAP_COMPOSE_EFFECTS)) { return 0; Loading @@ -375,7 +379,7 @@ final class VibratorController { return duration; } } finally { Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR); Trace.traceEnd(TRACE_TAG_VIBRATOR); } } Loading @@ -388,7 +392,7 @@ final class VibratorController { * @return The duration of the effect playing, or 0 if unsupported. */ public long on(RampSegment[] primitives, long vibrationId) { Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "VibratorController#on (PWLE)"); Trace.traceBegin(TRACE_TAG_VIBRATOR, "VibratorController#on (PWLE)"); try { if (!mVibratorInfo.hasCapability(IVibrator.CAP_COMPOSE_PWLE_EFFECTS)) { return 0; Loading @@ -403,7 +407,7 @@ final class VibratorController { return duration; } } finally { Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR); Trace.traceEnd(TRACE_TAG_VIBRATOR); } } Loading @@ -413,7 +417,7 @@ final class VibratorController { * <p>This will affect the state of {@link #isVibrating()}. */ public void off() { Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "VibratorController#off"); Trace.traceBegin(TRACE_TAG_VIBRATOR, "VibratorController#off"); try { synchronized (mLock) { mNativeWrapper.off(); Loading @@ -421,7 +425,7 @@ final class VibratorController { notifyListenerOnVibrating(false); } } finally { Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR); Trace.traceEnd(TRACE_TAG_VIBRATOR); } } Loading services/core/java/com/android/server/vibrator/VibratorManagerService.java +51 −47 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.server.vibrator; import static android.os.Trace.TRACE_TAG_VIBRATOR; import static android.os.VibrationAttributes.USAGE_CLASS_ALARM; import static android.os.VibrationEffect.VibrationParameter.targetAmplitude; import static android.os.VibrationEffect.VibrationParameter.targetFrequency; Loading Loading @@ -333,7 +334,7 @@ public class VibratorManagerService extends IVibratorManagerService.Stub { @VisibleForTesting void systemReady() { Slog.v(TAG, "Initializing VibratorManager service..."); Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "systemReady"); Trace.traceBegin(TRACE_TAG_VIBRATOR, "systemReady"); try { // Will retry to load each vibrator's info, if any request have failed. for (int i = 0; i < mVibrators.size(); i++) { Loading @@ -352,7 +353,7 @@ public class VibratorManagerService extends IVibratorManagerService.Stub { mServiceReady = true; } Slog.v(TAG, "VibratorManager service initialized"); Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR); Trace.traceEnd(TRACE_TAG_VIBRATOR); } } Loading Loading @@ -413,7 +414,7 @@ public class VibratorManagerService extends IVibratorManagerService.Stub { @Override // Binder call public boolean setAlwaysOnEffect(int uid, String opPkg, int alwaysOnId, @Nullable CombinedVibration effect, @Nullable VibrationAttributes attrs) { Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "setAlwaysOnEffect"); Trace.traceBegin(TRACE_TAG_VIBRATOR, "setAlwaysOnEffect"); try { mContext.enforceCallingOrSelfPermission( android.Manifest.permission.VIBRATE_ALWAYS_ON, Loading Loading @@ -449,20 +450,25 @@ public class VibratorManagerService extends IVibratorManagerService.Stub { } return true; } finally { Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR); Trace.traceEnd(TRACE_TAG_VIBRATOR); } } @Override // Binder call public void vibrate(int uid, int deviceId, String opPkg, @NonNull CombinedVibration effect, @Nullable VibrationAttributes attrs, String reason, IBinder token) { Trace.traceBegin(TRACE_TAG_VIBRATOR, "vibrate"); try { vibrateWithPermissionCheck(uid, deviceId, opPkg, effect, attrs, reason, token); } finally { Trace.traceEnd(TRACE_TAG_VIBRATOR); } } @Override // Binder call public void performHapticFeedback(int uid, int deviceId, String opPkg, int constant, String reason, int flags, int privFlags) { Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "performHapticFeedback"); Trace.traceBegin(TRACE_TAG_VIBRATOR, "performHapticFeedback"); // Note that the `performHapticFeedback` method does not take a token argument from the // caller, and instead, uses this service as the token. This is to mitigate performance // impact that would otherwise be caused due to marshal latency. Haptic feedback effects are Loading @@ -471,7 +477,7 @@ public class VibratorManagerService extends IVibratorManagerService.Stub { performHapticFeedbackInternal(uid, deviceId, opPkg, constant, reason, /* token= */ this, flags, privFlags); } finally { Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR); Trace.traceEnd(TRACE_TAG_VIBRATOR); } } Loading @@ -479,13 +485,13 @@ public class VibratorManagerService extends IVibratorManagerService.Stub { public void performHapticFeedbackForInputDevice(int uid, int deviceId, String opPkg, int constant, int inputDeviceId, int inputSource, String reason, int flags, int privFlags) { Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "performHapticFeedbackForInputDevice"); Trace.traceBegin(TRACE_TAG_VIBRATOR, "performHapticFeedbackForInputDevice"); try { performHapticFeedbackForInputDeviceInternal(uid, deviceId, opPkg, constant, inputDeviceId, inputSource, reason, /* token= */ this, flags, privFlags); } finally { Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR); Trace.traceEnd(TRACE_TAG_VIBRATOR); } } Loading Loading @@ -563,26 +569,16 @@ public class VibratorManagerService extends IVibratorManagerService.Stub { HalVibration vibrateWithPermissionCheck(int uid, int deviceId, String opPkg, @NonNull CombinedVibration effect, @Nullable VibrationAttributes attrs, String reason, IBinder token) { Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "vibrate, reason = " + reason); try { attrs = fixupVibrationAttributes(attrs, effect); mContext.enforceCallingOrSelfPermission( android.Manifest.permission.VIBRATE, "vibrate"); return vibrateInternal(uid, deviceId, opPkg, effect, attrs, reason, token); } finally { Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR); } } HalVibration vibrateWithoutPermissionCheck(int uid, int deviceId, String opPkg, @NonNull CombinedVibration effect, @NonNull VibrationAttributes attrs, String reason, IBinder token) { Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "vibrate no perm check, reason = " + reason); try { return vibrateInternal(uid, deviceId, opPkg, effect, attrs, reason, token); } finally { Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR); } } private HalVibration vibrateInternal(int uid, int deviceId, String opPkg, Loading Loading @@ -671,7 +667,7 @@ public class VibratorManagerService extends IVibratorManagerService.Stub { @Override // Binder call public void cancelVibrate(int usageFilter, IBinder token) { Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "cancelVibrate"); Trace.traceBegin(TRACE_TAG_VIBRATOR, "cancelVibrate"); try { mContext.enforceCallingOrSelfPermission( android.Manifest.permission.VIBRATE, Loading Loading @@ -708,7 +704,7 @@ public class VibratorManagerService extends IVibratorManagerService.Stub { } } } finally { Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR); Trace.traceEnd(TRACE_TAG_VIBRATOR); } } Loading Loading @@ -899,7 +895,7 @@ public class VibratorManagerService extends IVibratorManagerService.Stub { @GuardedBy("mLock") @Nullable private Vibration.EndInfo startVibrationLocked(HalVibration vib) { Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "startVibrationLocked"); Trace.traceBegin(TRACE_TAG_VIBRATOR, "startVibrationLocked"); try { if (mInputDeviceDelegate.isAvailable()) { return startVibrationOnInputDevicesLocked(vib); Loading @@ -919,7 +915,7 @@ public class VibratorManagerService extends IVibratorManagerService.Stub { mNextVibration = conductor; return null; } finally { Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR); Trace.traceEnd(TRACE_TAG_VIBRATOR); } } Loading @@ -930,7 +926,7 @@ public class VibratorManagerService extends IVibratorManagerService.Stub { int mode = startAppOpModeLocked(vib.callerInfo); switch (mode) { case AppOpsManager.MODE_ALLOWED: Trace.asyncTraceBegin(Trace.TRACE_TAG_VIBRATOR, "vibration", 0); Trace.asyncTraceBegin(TRACE_TAG_VIBRATOR, "vibration", 0); // Make sure mCurrentVibration is set while triggering the VibrationThread. mCurrentVibration = conductor; if (!mCurrentVibration.linkToDeath()) { Loading Loading @@ -1581,7 +1577,7 @@ public class VibratorManagerService extends IVibratorManagerService.Stub { @Override public boolean prepareSyncedVibration(long requiredCapabilities, int[] vibratorIds) { Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "prepareSyncedVibration"); Trace.traceBegin(TRACE_TAG_VIBRATOR, "prepareSyncedVibration"); try { if ((mCapabilities & requiredCapabilities) != requiredCapabilities) { // This sync step requires capabilities this device doesn't have, skipping Loading @@ -1590,33 +1586,33 @@ public class VibratorManagerService extends IVibratorManagerService.Stub { } return mNativeWrapper.prepareSynced(vibratorIds); } finally { Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR); Trace.traceEnd(TRACE_TAG_VIBRATOR); } } @Override public boolean triggerSyncedVibration(long vibrationId) { Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "triggerSyncedVibration"); Trace.traceBegin(TRACE_TAG_VIBRATOR, "triggerSyncedVibration"); try { return mNativeWrapper.triggerSynced(vibrationId); } finally { Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR); Trace.traceEnd(TRACE_TAG_VIBRATOR); } } @Override public void cancelSyncedVibration() { Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "cancelSyncedVibration"); Trace.traceBegin(TRACE_TAG_VIBRATOR, "cancelSyncedVibration"); try { mNativeWrapper.cancelSynced(); } finally { Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR); Trace.traceEnd(TRACE_TAG_VIBRATOR); } } @Override public void noteVibratorOn(int uid, long duration) { Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "noteVibratorOn"); Trace.traceBegin(TRACE_TAG_VIBRATOR, "noteVibratorOn"); try { if (duration <= 0) { // Tried to turn vibrator ON and got: Loading @@ -1635,20 +1631,20 @@ public class VibratorManagerService extends IVibratorManagerService.Stub { } catch (RemoteException e) { Slog.e(TAG, "Error logging VibratorStateChanged to ON", e); } finally { Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR); Trace.traceEnd(TRACE_TAG_VIBRATOR); } } @Override public void noteVibratorOff(int uid) { Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "noteVibratorOff"); Trace.traceBegin(TRACE_TAG_VIBRATOR, "noteVibratorOff"); try { mBatteryStatsService.noteVibratorOff(uid); mFrameworkStatsLogger.writeVibratorStateOffAsync(uid); } catch (RemoteException e) { Slog.e(TAG, "Error logging VibratorStateChanged to OFF", e); } finally { Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR); Trace.traceEnd(TRACE_TAG_VIBRATOR); } } Loading @@ -1657,7 +1653,8 @@ public class VibratorManagerService extends IVibratorManagerService.Stub { if (DEBUG) { Slog.d(TAG, "VibrationThread released after finished vibration"); } Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "onVibrationThreadReleased: " + vibrationId); Trace.traceBegin(TRACE_TAG_VIBRATOR, "onVibrationThreadReleased"); try { synchronized (mLock) { if (DEBUG) { Loading Loading @@ -1686,7 +1683,7 @@ public class VibratorManagerService extends IVibratorManagerService.Stub { } } } finally { Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR); Trace.traceEnd(TRACE_TAG_VIBRATOR); } } } Loading Loading @@ -1994,7 +1991,7 @@ public class VibratorManagerService extends IVibratorManagerService.Stub { @Override public ExternalVibrationScale onExternalVibrationStart(ExternalVibration vib) { Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "onExternalVibrationStart"); Trace.traceBegin(TRACE_TAG_VIBRATOR, "onExternalVibrationStart"); try { // Create Vibration.Stats as close to the received request as possible, for // tracking. Loading Loading @@ -2116,13 +2113,13 @@ public class VibratorManagerService extends IVibratorManagerService.Stub { return externalVibration.getScale(); } } finally { Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR); Trace.traceEnd(TRACE_TAG_VIBRATOR); } } @Override public void onExternalVibrationStop(ExternalVibration vib) { Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "onExternalVibrationStop"); Trace.traceBegin(TRACE_TAG_VIBRATOR, "onExternalVibrationStop"); try { synchronized (mLock) { if (mCurrentExternalVibration != null Loading @@ -2135,7 +2132,7 @@ public class VibratorManagerService extends IVibratorManagerService.Stub { } } } finally { Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR); Trace.traceEnd(TRACE_TAG_VIBRATOR); } } Loading Loading @@ -2203,32 +2200,39 @@ public class VibratorManagerService extends IVibratorManagerService.Stub { @Override public int onCommand(String cmd) { Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "onCommand " + cmd); try { if ("list".equals(cmd)) { Trace.traceBegin(TRACE_TAG_VIBRATOR, "onCommand: list"); return runListVibrators(); } if ("synced".equals(cmd)) { Trace.traceBegin(TRACE_TAG_VIBRATOR, "onCommand: synced"); return runMono(); } if ("combined".equals(cmd)) { Trace.traceBegin(TRACE_TAG_VIBRATOR, "onCommand: combined"); return runStereo(); } if ("sequential".equals(cmd)) { Trace.traceBegin(TRACE_TAG_VIBRATOR, "onCommand: sequential"); return runSequential(); } if ("xml".equals(cmd)) { Trace.traceBegin(TRACE_TAG_VIBRATOR, "onCommand: xml"); return runXml(); } if ("cancel".equals(cmd)) { Trace.traceBegin(TRACE_TAG_VIBRATOR, "onCommand: cancel"); return runCancel(); } if ("feedback".equals(cmd)) { Trace.traceBegin(TRACE_TAG_VIBRATOR, "onCommand: feedback"); return runHapticFeedback(); } Trace.traceBegin(TRACE_TAG_VIBRATOR, "onCommand: default"); return handleDefaultCommands(cmd); } finally { Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR); Trace.traceEnd(TRACE_TAG_VIBRATOR); } } Loading Loading
core/java/android/os/SystemVibratorManager.java +8 −7 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ package android.os; import static android.os.Trace.TRACE_TAG_VIBRATOR; import android.annotation.CallbackExecutor; import android.annotation.NonNull; import android.annotation.Nullable; Loading Loading @@ -138,14 +140,14 @@ public class SystemVibratorManager extends VibratorManager { Log.w(TAG, "Failed to vibrate; no vibrator manager service."); return; } Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "vibrate, reason=" + reason); Trace.traceBegin(TRACE_TAG_VIBRATOR, "vibrate"); try { mService.vibrate(uid, mContext.getDeviceId(), opPkg, effect, attributes, reason, mToken); } catch (RemoteException e) { Log.w(TAG, "Failed to vibrate.", e); } finally { Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR); Trace.traceEnd(TRACE_TAG_VIBRATOR); } } Loading @@ -155,14 +157,14 @@ public class SystemVibratorManager extends VibratorManager { Log.w(TAG, "Failed to perform haptic feedback; no vibrator manager service."); return; } Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "performHapticFeedback, reason=" + reason); Trace.traceBegin(TRACE_TAG_VIBRATOR, "performHapticFeedback"); try { mService.performHapticFeedback(mUid, mContext.getDeviceId(), mPackageName, constant, reason, flags, privFlags); } catch (RemoteException e) { Log.w(TAG, "Failed to perform haptic feedback.", e); } finally { Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR); Trace.traceEnd(TRACE_TAG_VIBRATOR); } } Loading @@ -174,15 +176,14 @@ public class SystemVibratorManager extends VibratorManager { + " no vibrator manager service."); return; } Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "performHapticFeedbackForInputDevice, reason=" + reason); Trace.traceBegin(TRACE_TAG_VIBRATOR, "performHapticFeedbackForInputDevice"); try { mService.performHapticFeedbackForInputDevice(mUid, mContext.getDeviceId(), mPackageName, constant, inputDeviceId, inputSource, reason, flags, privFlags); } catch (RemoteException e) { Log.w(TAG, "Failed to perform haptic feedback for input device.", e); } finally { Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR); Trace.traceEnd(TRACE_TAG_VIBRATOR); } } Loading
services/core/java/com/android/server/vibrator/VibrationThread.java +8 −6 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ package com.android.server.vibrator; import static android.os.Trace.TRACE_TAG_VIBRATOR; import android.annotation.NonNull; import android.annotation.Nullable; import android.os.PowerManager; Loading Loading @@ -117,7 +119,7 @@ final class VibrationThread extends Thread { * before the release callback. */ boolean runVibrationOnVibrationThread(VibrationStepConductor conductor) { Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "runVibrationOnVibrationThread"); Trace.traceBegin(TRACE_TAG_VIBRATOR, "runVibrationOnVibrationThread"); try { synchronized (mLock) { if (mRequestedActiveConductor != null) { Loading @@ -129,7 +131,7 @@ final class VibrationThread extends Thread { } return true; } finally { Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR); Trace.traceEnd(TRACE_TAG_VIBRATOR); } } Loading Loading @@ -249,17 +251,17 @@ final class VibrationThread extends Thread { private void clientVibrationCompleteIfNotAlready(@NonNull Vibration.EndInfo vibrationEndInfo) { if (!mCalledVibrationCompleteCallback) { mCalledVibrationCompleteCallback = true; Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "notifyVibrationComplete"); Trace.traceBegin(TRACE_TAG_VIBRATOR, "notifyVibrationComplete"); try { mExecutingConductor.notifyVibrationComplete(vibrationEndInfo); } finally { Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR); Trace.traceEnd(TRACE_TAG_VIBRATOR); } } } private void playVibration() { Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "playVibration"); Trace.traceBegin(TRACE_TAG_VIBRATOR, "playVibration"); try { mExecutingConductor.prepareToStart(); while (!mExecutingConductor.isFinished()) { Loading @@ -283,7 +285,7 @@ final class VibrationThread extends Thread { } } } finally { Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR); Trace.traceEnd(TRACE_TAG_VIBRATOR); } } }
services/core/java/com/android/server/vibrator/VibratorController.java +26 −22 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ package com.android.server.vibrator; import static android.os.Trace.TRACE_TAG_VIBRATOR; import android.annotation.Nullable; import android.hardware.vibrator.IVibrator; import android.os.Binder; Loading Loading @@ -124,7 +126,7 @@ final class VibratorController { /** Reruns the query to the vibrator to load the {@link VibratorInfo}, if not yet successful. */ public void reloadVibratorInfoIfNeeded() { Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "VibratorController#reloadVibratorInfoIfNeeded"); Trace.traceBegin(TRACE_TAG_VIBRATOR, "VibratorController#reloadVibratorInfoIfNeeded"); try { // Early check outside lock, for quick return. if (mVibratorInfoLoadSuccessful) { Loading @@ -143,7 +145,7 @@ final class VibratorController { } } } finally { Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR); Trace.traceEnd(TRACE_TAG_VIBRATOR); } } Loading Loading @@ -199,13 +201,13 @@ final class VibratorController { /** Return {@code true} if the underlying vibrator is currently available, false otherwise. */ public boolean isAvailable() { Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "VibratorController#isAvailable"); Trace.traceBegin(TRACE_TAG_VIBRATOR, "VibratorController#isAvailable"); try { synchronized (mLock) { return mNativeWrapper.isAvailable(); } } finally { Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR); Trace.traceEnd(TRACE_TAG_VIBRATOR); } } Loading @@ -215,7 +217,9 @@ final class VibratorController { * <p>This will affect the state of {@link #isUnderExternalControl()}. */ public void setExternalControl(boolean externalControl) { Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "setExternalControl(" + externalControl + ")"); Trace.traceBegin(TRACE_TAG_VIBRATOR, externalControl ? "VibratorController#enableExternalControl" : "VibratorController#disableExternalControl"); try { if (!mVibratorInfo.hasCapability(IVibrator.CAP_EXTERNAL_CONTROL)) { return; Loading @@ -225,7 +229,7 @@ final class VibratorController { mNativeWrapper.setExternalControl(externalControl); } } finally { Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR); Trace.traceEnd(TRACE_TAG_VIBRATOR); } } Loading @@ -234,7 +238,7 @@ final class VibratorController { * if given {@code effect} is {@code null}. */ public void updateAlwaysOn(int id, @Nullable PrebakedSegment prebaked) { Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "VibratorController#updateAlwaysOn"); Trace.traceBegin(TRACE_TAG_VIBRATOR, "VibratorController#updateAlwaysOn"); try { if (!mVibratorInfo.hasCapability(IVibrator.CAP_ALWAYS_ON_CONTROL)) { return; Loading @@ -248,13 +252,13 @@ final class VibratorController { } } } finally { Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR); Trace.traceEnd(TRACE_TAG_VIBRATOR); } } /** Set the vibration amplitude. This will NOT affect the state of {@link #isVibrating()}. */ public void setAmplitude(float amplitude) { Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "VibratorController#setAmplitude"); Trace.traceBegin(TRACE_TAG_VIBRATOR, "VibratorController#setAmplitude"); try { synchronized (mLock) { if (mVibratorInfo.hasCapability(IVibrator.CAP_AMPLITUDE_CONTROL)) { Loading @@ -265,7 +269,7 @@ final class VibratorController { } } } finally { Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR); Trace.traceEnd(TRACE_TAG_VIBRATOR); } } Loading @@ -279,7 +283,7 @@ final class VibratorController { * do not support the input or a negative number if the operation failed. */ public long on(long milliseconds, long vibrationId) { Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "VibratorController#on"); Trace.traceBegin(TRACE_TAG_VIBRATOR, "VibratorController#on"); try { synchronized (mLock) { long duration = mNativeWrapper.on(milliseconds, vibrationId); Loading @@ -290,7 +294,7 @@ final class VibratorController { return duration; } } finally { Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR); Trace.traceEnd(TRACE_TAG_VIBRATOR); } } Loading @@ -304,7 +308,7 @@ final class VibratorController { * do not support the input or a negative number if the operation failed. */ public long on(VibrationEffect.VendorEffect vendorEffect, long vibrationId) { Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "VibratorController#on (vendor)"); Trace.traceBegin(TRACE_TAG_VIBRATOR, "VibratorController#on (vendor)"); synchronized (mLock) { Parcel vendorData = Parcel.obtain(); try { Loading @@ -320,7 +324,7 @@ final class VibratorController { return duration; } finally { vendorData.recycle(); Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR); Trace.traceEnd(TRACE_TAG_VIBRATOR); } } } Loading @@ -335,7 +339,7 @@ final class VibratorController { * do not support the input or a negative number if the operation failed. */ public long on(PrebakedSegment prebaked, long vibrationId) { Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "VibratorController#on (Prebaked)"); Trace.traceBegin(TRACE_TAG_VIBRATOR, "VibratorController#on (Prebaked)"); try { synchronized (mLock) { long duration = mNativeWrapper.perform(prebaked.getEffectId(), Loading @@ -347,7 +351,7 @@ final class VibratorController { return duration; } } finally { Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR); Trace.traceEnd(TRACE_TAG_VIBRATOR); } } Loading @@ -361,7 +365,7 @@ final class VibratorController { * do not support the input or a negative number if the operation failed. */ public long on(PrimitiveSegment[] primitives, long vibrationId) { Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "VibratorController#on (Primitive)"); Trace.traceBegin(TRACE_TAG_VIBRATOR, "VibratorController#on (Primitive)"); try { if (!mVibratorInfo.hasCapability(IVibrator.CAP_COMPOSE_EFFECTS)) { return 0; Loading @@ -375,7 +379,7 @@ final class VibratorController { return duration; } } finally { Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR); Trace.traceEnd(TRACE_TAG_VIBRATOR); } } Loading @@ -388,7 +392,7 @@ final class VibratorController { * @return The duration of the effect playing, or 0 if unsupported. */ public long on(RampSegment[] primitives, long vibrationId) { Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "VibratorController#on (PWLE)"); Trace.traceBegin(TRACE_TAG_VIBRATOR, "VibratorController#on (PWLE)"); try { if (!mVibratorInfo.hasCapability(IVibrator.CAP_COMPOSE_PWLE_EFFECTS)) { return 0; Loading @@ -403,7 +407,7 @@ final class VibratorController { return duration; } } finally { Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR); Trace.traceEnd(TRACE_TAG_VIBRATOR); } } Loading @@ -413,7 +417,7 @@ final class VibratorController { * <p>This will affect the state of {@link #isVibrating()}. */ public void off() { Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "VibratorController#off"); Trace.traceBegin(TRACE_TAG_VIBRATOR, "VibratorController#off"); try { synchronized (mLock) { mNativeWrapper.off(); Loading @@ -421,7 +425,7 @@ final class VibratorController { notifyListenerOnVibrating(false); } } finally { Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR); Trace.traceEnd(TRACE_TAG_VIBRATOR); } } Loading
services/core/java/com/android/server/vibrator/VibratorManagerService.java +51 −47 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.server.vibrator; import static android.os.Trace.TRACE_TAG_VIBRATOR; import static android.os.VibrationAttributes.USAGE_CLASS_ALARM; import static android.os.VibrationEffect.VibrationParameter.targetAmplitude; import static android.os.VibrationEffect.VibrationParameter.targetFrequency; Loading Loading @@ -333,7 +334,7 @@ public class VibratorManagerService extends IVibratorManagerService.Stub { @VisibleForTesting void systemReady() { Slog.v(TAG, "Initializing VibratorManager service..."); Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "systemReady"); Trace.traceBegin(TRACE_TAG_VIBRATOR, "systemReady"); try { // Will retry to load each vibrator's info, if any request have failed. for (int i = 0; i < mVibrators.size(); i++) { Loading @@ -352,7 +353,7 @@ public class VibratorManagerService extends IVibratorManagerService.Stub { mServiceReady = true; } Slog.v(TAG, "VibratorManager service initialized"); Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR); Trace.traceEnd(TRACE_TAG_VIBRATOR); } } Loading Loading @@ -413,7 +414,7 @@ public class VibratorManagerService extends IVibratorManagerService.Stub { @Override // Binder call public boolean setAlwaysOnEffect(int uid, String opPkg, int alwaysOnId, @Nullable CombinedVibration effect, @Nullable VibrationAttributes attrs) { Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "setAlwaysOnEffect"); Trace.traceBegin(TRACE_TAG_VIBRATOR, "setAlwaysOnEffect"); try { mContext.enforceCallingOrSelfPermission( android.Manifest.permission.VIBRATE_ALWAYS_ON, Loading Loading @@ -449,20 +450,25 @@ public class VibratorManagerService extends IVibratorManagerService.Stub { } return true; } finally { Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR); Trace.traceEnd(TRACE_TAG_VIBRATOR); } } @Override // Binder call public void vibrate(int uid, int deviceId, String opPkg, @NonNull CombinedVibration effect, @Nullable VibrationAttributes attrs, String reason, IBinder token) { Trace.traceBegin(TRACE_TAG_VIBRATOR, "vibrate"); try { vibrateWithPermissionCheck(uid, deviceId, opPkg, effect, attrs, reason, token); } finally { Trace.traceEnd(TRACE_TAG_VIBRATOR); } } @Override // Binder call public void performHapticFeedback(int uid, int deviceId, String opPkg, int constant, String reason, int flags, int privFlags) { Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "performHapticFeedback"); Trace.traceBegin(TRACE_TAG_VIBRATOR, "performHapticFeedback"); // Note that the `performHapticFeedback` method does not take a token argument from the // caller, and instead, uses this service as the token. This is to mitigate performance // impact that would otherwise be caused due to marshal latency. Haptic feedback effects are Loading @@ -471,7 +477,7 @@ public class VibratorManagerService extends IVibratorManagerService.Stub { performHapticFeedbackInternal(uid, deviceId, opPkg, constant, reason, /* token= */ this, flags, privFlags); } finally { Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR); Trace.traceEnd(TRACE_TAG_VIBRATOR); } } Loading @@ -479,13 +485,13 @@ public class VibratorManagerService extends IVibratorManagerService.Stub { public void performHapticFeedbackForInputDevice(int uid, int deviceId, String opPkg, int constant, int inputDeviceId, int inputSource, String reason, int flags, int privFlags) { Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "performHapticFeedbackForInputDevice"); Trace.traceBegin(TRACE_TAG_VIBRATOR, "performHapticFeedbackForInputDevice"); try { performHapticFeedbackForInputDeviceInternal(uid, deviceId, opPkg, constant, inputDeviceId, inputSource, reason, /* token= */ this, flags, privFlags); } finally { Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR); Trace.traceEnd(TRACE_TAG_VIBRATOR); } } Loading Loading @@ -563,26 +569,16 @@ public class VibratorManagerService extends IVibratorManagerService.Stub { HalVibration vibrateWithPermissionCheck(int uid, int deviceId, String opPkg, @NonNull CombinedVibration effect, @Nullable VibrationAttributes attrs, String reason, IBinder token) { Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "vibrate, reason = " + reason); try { attrs = fixupVibrationAttributes(attrs, effect); mContext.enforceCallingOrSelfPermission( android.Manifest.permission.VIBRATE, "vibrate"); return vibrateInternal(uid, deviceId, opPkg, effect, attrs, reason, token); } finally { Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR); } } HalVibration vibrateWithoutPermissionCheck(int uid, int deviceId, String opPkg, @NonNull CombinedVibration effect, @NonNull VibrationAttributes attrs, String reason, IBinder token) { Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "vibrate no perm check, reason = " + reason); try { return vibrateInternal(uid, deviceId, opPkg, effect, attrs, reason, token); } finally { Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR); } } private HalVibration vibrateInternal(int uid, int deviceId, String opPkg, Loading Loading @@ -671,7 +667,7 @@ public class VibratorManagerService extends IVibratorManagerService.Stub { @Override // Binder call public void cancelVibrate(int usageFilter, IBinder token) { Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "cancelVibrate"); Trace.traceBegin(TRACE_TAG_VIBRATOR, "cancelVibrate"); try { mContext.enforceCallingOrSelfPermission( android.Manifest.permission.VIBRATE, Loading Loading @@ -708,7 +704,7 @@ public class VibratorManagerService extends IVibratorManagerService.Stub { } } } finally { Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR); Trace.traceEnd(TRACE_TAG_VIBRATOR); } } Loading Loading @@ -899,7 +895,7 @@ public class VibratorManagerService extends IVibratorManagerService.Stub { @GuardedBy("mLock") @Nullable private Vibration.EndInfo startVibrationLocked(HalVibration vib) { Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "startVibrationLocked"); Trace.traceBegin(TRACE_TAG_VIBRATOR, "startVibrationLocked"); try { if (mInputDeviceDelegate.isAvailable()) { return startVibrationOnInputDevicesLocked(vib); Loading @@ -919,7 +915,7 @@ public class VibratorManagerService extends IVibratorManagerService.Stub { mNextVibration = conductor; return null; } finally { Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR); Trace.traceEnd(TRACE_TAG_VIBRATOR); } } Loading @@ -930,7 +926,7 @@ public class VibratorManagerService extends IVibratorManagerService.Stub { int mode = startAppOpModeLocked(vib.callerInfo); switch (mode) { case AppOpsManager.MODE_ALLOWED: Trace.asyncTraceBegin(Trace.TRACE_TAG_VIBRATOR, "vibration", 0); Trace.asyncTraceBegin(TRACE_TAG_VIBRATOR, "vibration", 0); // Make sure mCurrentVibration is set while triggering the VibrationThread. mCurrentVibration = conductor; if (!mCurrentVibration.linkToDeath()) { Loading Loading @@ -1581,7 +1577,7 @@ public class VibratorManagerService extends IVibratorManagerService.Stub { @Override public boolean prepareSyncedVibration(long requiredCapabilities, int[] vibratorIds) { Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "prepareSyncedVibration"); Trace.traceBegin(TRACE_TAG_VIBRATOR, "prepareSyncedVibration"); try { if ((mCapabilities & requiredCapabilities) != requiredCapabilities) { // This sync step requires capabilities this device doesn't have, skipping Loading @@ -1590,33 +1586,33 @@ public class VibratorManagerService extends IVibratorManagerService.Stub { } return mNativeWrapper.prepareSynced(vibratorIds); } finally { Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR); Trace.traceEnd(TRACE_TAG_VIBRATOR); } } @Override public boolean triggerSyncedVibration(long vibrationId) { Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "triggerSyncedVibration"); Trace.traceBegin(TRACE_TAG_VIBRATOR, "triggerSyncedVibration"); try { return mNativeWrapper.triggerSynced(vibrationId); } finally { Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR); Trace.traceEnd(TRACE_TAG_VIBRATOR); } } @Override public void cancelSyncedVibration() { Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "cancelSyncedVibration"); Trace.traceBegin(TRACE_TAG_VIBRATOR, "cancelSyncedVibration"); try { mNativeWrapper.cancelSynced(); } finally { Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR); Trace.traceEnd(TRACE_TAG_VIBRATOR); } } @Override public void noteVibratorOn(int uid, long duration) { Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "noteVibratorOn"); Trace.traceBegin(TRACE_TAG_VIBRATOR, "noteVibratorOn"); try { if (duration <= 0) { // Tried to turn vibrator ON and got: Loading @@ -1635,20 +1631,20 @@ public class VibratorManagerService extends IVibratorManagerService.Stub { } catch (RemoteException e) { Slog.e(TAG, "Error logging VibratorStateChanged to ON", e); } finally { Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR); Trace.traceEnd(TRACE_TAG_VIBRATOR); } } @Override public void noteVibratorOff(int uid) { Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "noteVibratorOff"); Trace.traceBegin(TRACE_TAG_VIBRATOR, "noteVibratorOff"); try { mBatteryStatsService.noteVibratorOff(uid); mFrameworkStatsLogger.writeVibratorStateOffAsync(uid); } catch (RemoteException e) { Slog.e(TAG, "Error logging VibratorStateChanged to OFF", e); } finally { Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR); Trace.traceEnd(TRACE_TAG_VIBRATOR); } } Loading @@ -1657,7 +1653,8 @@ public class VibratorManagerService extends IVibratorManagerService.Stub { if (DEBUG) { Slog.d(TAG, "VibrationThread released after finished vibration"); } Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "onVibrationThreadReleased: " + vibrationId); Trace.traceBegin(TRACE_TAG_VIBRATOR, "onVibrationThreadReleased"); try { synchronized (mLock) { if (DEBUG) { Loading Loading @@ -1686,7 +1683,7 @@ public class VibratorManagerService extends IVibratorManagerService.Stub { } } } finally { Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR); Trace.traceEnd(TRACE_TAG_VIBRATOR); } } } Loading Loading @@ -1994,7 +1991,7 @@ public class VibratorManagerService extends IVibratorManagerService.Stub { @Override public ExternalVibrationScale onExternalVibrationStart(ExternalVibration vib) { Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "onExternalVibrationStart"); Trace.traceBegin(TRACE_TAG_VIBRATOR, "onExternalVibrationStart"); try { // Create Vibration.Stats as close to the received request as possible, for // tracking. Loading Loading @@ -2116,13 +2113,13 @@ public class VibratorManagerService extends IVibratorManagerService.Stub { return externalVibration.getScale(); } } finally { Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR); Trace.traceEnd(TRACE_TAG_VIBRATOR); } } @Override public void onExternalVibrationStop(ExternalVibration vib) { Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "onExternalVibrationStop"); Trace.traceBegin(TRACE_TAG_VIBRATOR, "onExternalVibrationStop"); try { synchronized (mLock) { if (mCurrentExternalVibration != null Loading @@ -2135,7 +2132,7 @@ public class VibratorManagerService extends IVibratorManagerService.Stub { } } } finally { Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR); Trace.traceEnd(TRACE_TAG_VIBRATOR); } } Loading Loading @@ -2203,32 +2200,39 @@ public class VibratorManagerService extends IVibratorManagerService.Stub { @Override public int onCommand(String cmd) { Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "onCommand " + cmd); try { if ("list".equals(cmd)) { Trace.traceBegin(TRACE_TAG_VIBRATOR, "onCommand: list"); return runListVibrators(); } if ("synced".equals(cmd)) { Trace.traceBegin(TRACE_TAG_VIBRATOR, "onCommand: synced"); return runMono(); } if ("combined".equals(cmd)) { Trace.traceBegin(TRACE_TAG_VIBRATOR, "onCommand: combined"); return runStereo(); } if ("sequential".equals(cmd)) { Trace.traceBegin(TRACE_TAG_VIBRATOR, "onCommand: sequential"); return runSequential(); } if ("xml".equals(cmd)) { Trace.traceBegin(TRACE_TAG_VIBRATOR, "onCommand: xml"); return runXml(); } if ("cancel".equals(cmd)) { Trace.traceBegin(TRACE_TAG_VIBRATOR, "onCommand: cancel"); return runCancel(); } if ("feedback".equals(cmd)) { Trace.traceBegin(TRACE_TAG_VIBRATOR, "onCommand: feedback"); return runHapticFeedback(); } Trace.traceBegin(TRACE_TAG_VIBRATOR, "onCommand: default"); return handleDefaultCommands(cmd); } finally { Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR); Trace.traceEnd(TRACE_TAG_VIBRATOR); } } Loading