Loading core/java/android/os/CombinedVibration.java +4 −0 Original line number Diff line number Diff line Loading @@ -906,6 +906,10 @@ public abstract class CombinedVibration implements Parcelable { for (int i = 0; i < mEffects.size(); i++) { CombinedVibration vibration = mEffects.get(i); CombinedVibration newVibration = vibration.adapt(adapter); if (newVibration == null) { // The vibration effect contains unsupported segments and cannot be played. return null; } combination.addNext(newVibration, mDelays.get(i)); hasSameEffects &= vibration.equals(newVibration); } Loading services/art-wear-profile +3 −3 Original line number Diff line number Diff line Loading @@ -1254,8 +1254,8 @@ Lcom/android/server/utils/WatchedSparseBooleanMatrix; Lcom/android/server/utils/WatchedSparseIntArray; Lcom/android/server/utils/WatchedSparseSetArray; Lcom/android/server/utils/Watcher; Lcom/android/server/vibrator/HalVibrator$Callbacks; Lcom/android/server/vibrator/VibratorController$NativeWrapper; Lcom/android/server/vibrator/VibratorController$OnVibrationCompleteListener; Lcom/android/server/vibrator/VibratorManagerService$VibratorManagerNativeCallbacks; Lcom/android/server/vibrator/VibratorManagerService; Lcom/android/server/wm/AbsAppSnapshotController; Loading Loading @@ -19822,14 +19822,14 @@ PLcom/android/server/vibrator/VibratorController$$ExternalSyntheticLambda0;-><in PLcom/android/server/vibrator/VibratorController$NativeWrapper;-><init>()V PLcom/android/server/vibrator/VibratorController$NativeWrapper;->compose([Landroid/os/vibrator/PrimitiveSegment;J)J PLcom/android/server/vibrator/VibratorController$NativeWrapper;->getInfo(Landroid/os/VibratorInfo$Builder;)Z PLcom/android/server/vibrator/VibratorController$NativeWrapper;->init(ILcom/android/server/vibrator/VibratorController$OnVibrationCompleteListener;)V PLcom/android/server/vibrator/VibratorController$NativeWrapper;->init(ILcom/android/server/vibrator/HalVibrator$Callbacks;)V PLcom/android/server/vibrator/VibratorController$NativeWrapper;->off()V PLcom/android/server/vibrator/VibratorController$NativeWrapper;->on(JJ)J PLcom/android/server/vibrator/VibratorController$NativeWrapper;->perform(JJJ)J PLcom/android/server/vibrator/VibratorController$NativeWrapper;->setAmplitude(F)V PLcom/android/server/vibrator/VibratorController$NativeWrapper;->setExternalControl(Z)V PLcom/android/server/vibrator/VibratorController$VibratorState;-><clinit>()V PLcom/android/server/vibrator/VibratorController;-><init>(ILcom/android/server/vibrator/VibratorController$OnVibrationCompleteListener;Lcom/android/server/vibrator/VibratorController$NativeWrapper;)V PLcom/android/server/vibrator/VibratorController;-><init>(ILcom/android/server/vibrator/HalVibrator$Callbacks;Lcom/android/server/vibrator/VibratorController$NativeWrapper;)V PLcom/android/server/vibrator/VibratorController;->dump(Landroid/util/IndentingPrintWriter;)V HPLcom/android/server/vibrator/VibratorController;->off()V PLcom/android/server/vibrator/VibratorController;->on(Landroid/os/vibrator/PrebakedSegment;J)J services/core/java/com/android/server/vibrator/AbstractComposedVibratorStep.java +5 −5 Original line number Diff line number Diff line Loading @@ -33,7 +33,7 @@ abstract class AbstractComposedVibratorStep extends AbstractVibratorStep { /** * @param conductor The {@link VibrationStepConductor} for these steps. * @param startTime The time to schedule this step in the conductor. * @param controller The vibrator that is playing the effect. * @param vibrator The vibrator that is playing the effect. * @param effect The effect being played in this step. * @param index The index of the next segment to be played by this step * @param pendingVibratorOffDeadline The time the vibrator is expected to complete any Loading @@ -42,9 +42,9 @@ abstract class AbstractComposedVibratorStep extends AbstractVibratorStep { * be used to play effects back-to-back. */ AbstractComposedVibratorStep(VibrationStepConductor conductor, long startTime, VibratorController controller, VibrationEffect.Composed effect, int index, HalVibrator vibrator, VibrationEffect.Composed effect, int index, long pendingVibratorOffDeadline) { super(conductor, startTime, controller, pendingVibratorOffDeadline); super(conductor, startTime, vibrator, pendingVibratorOffDeadline); this.effect = effect; this.segmentIndex = index; } Loading Loading @@ -116,7 +116,7 @@ abstract class AbstractComposedVibratorStep extends AbstractVibratorStep { getVibration().stats.reportRepetition(loopSegmentsPlayed / loopSize); nextSegmentIndex = repeatIndex + ((nextSegmentIndex - effectSize) % loopSize); } Step nextStep = conductor.nextVibrateStep(nextStartTime, controller, effect, Step nextStep = conductor.nextVibrateStep(nextStartTime, vibrator, effect, nextSegmentIndex, mPendingVibratorOffDeadline); return List.of(nextStep); } Loading @@ -124,6 +124,6 @@ abstract class AbstractComposedVibratorStep extends AbstractVibratorStep { /** Return next steps for cancelling the vibration playback. */ protected List<Step> cancelStep() { return List.of(new CompleteEffectVibratorStep(conductor, SystemClock.uptimeMillis(), /* cancelled= */ true, controller, /* pendingVibratorOffDeadline= */ 0)); /* cancelled= */ true, vibrator, /* pendingVibratorOffDeadline= */ 0)); } } services/core/java/com/android/server/vibrator/AbstractVibratorStep.java +9 −9 Original line number Diff line number Diff line Loading @@ -23,9 +23,9 @@ import android.util.Slog; import java.util.Arrays; import java.util.List; /** Represent a step on a single vibrator that plays a command on {@link VibratorController}. */ /** Represent a step on a single vibrator that plays a command on {@link HalVibrator}. */ abstract class AbstractVibratorStep extends Step { public final VibratorController controller; public final HalVibrator vibrator; long mVibratorOnResult; long mPendingVibratorOffDeadline; Loading @@ -35,21 +35,21 @@ abstract class AbstractVibratorStep extends Step { * @param conductor The VibrationStepConductor for these steps. * @param startTime The time to schedule this step in the * {@link VibrationStepConductor}. * @param controller The vibrator that is playing the effect. * @param vibrator The vibrator that is playing the effect. * @param pendingVibratorOffDeadline The time the vibrator is expected to complete any * previous vibration and turn off. This is used to allow this step to * be triggered when the completion callback is received, and can * be used to play effects back-to-back. */ AbstractVibratorStep(VibrationStepConductor conductor, long startTime, VibratorController controller, long pendingVibratorOffDeadline) { HalVibrator vibrator, long pendingVibratorOffDeadline) { super(conductor, startTime); this.controller = controller; this.vibrator = vibrator; mPendingVibratorOffDeadline = pendingVibratorOffDeadline; } public int getVibratorId() { return controller.getVibratorInfo().getId(); return vibrator.getInfo().getId(); } @Override Loading Loading @@ -82,7 +82,7 @@ abstract class AbstractVibratorStep extends Step { @Override public List<Step> cancel() { return Arrays.asList(new CompleteEffectVibratorStep(conductor, SystemClock.uptimeMillis(), /* cancelled= */ true, controller, mPendingVibratorOffDeadline)); /* cancelled= */ true, vibrator, mPendingVibratorOffDeadline)); } @Override Loading Loading @@ -126,7 +126,7 @@ abstract class AbstractVibratorStep extends Step { } // Make sure we ignore any pending callback from old vibration commands. conductor.nextVibratorCallbackStepId(getVibratorId()); controller.off(); vibrator.off(); getVibration().stats.reportVibratorOff(); mPendingVibratorOffDeadline = 0; } Loading @@ -136,7 +136,7 @@ abstract class AbstractVibratorStep extends Step { Slog.d(VibrationThread.TAG, "Amplitude changed on vibrator " + getVibratorId() + " to " + amplitude); } controller.setAmplitude(amplitude); vibrator.setAmplitude(amplitude); getVibration().stats.reportSetAmplitude(); } } services/core/java/com/android/server/vibrator/CompleteEffectVibratorStep.java +8 −8 Original line number Diff line number Diff line Loading @@ -35,8 +35,8 @@ final class CompleteEffectVibratorStep extends AbstractVibratorStep { private final boolean mCancelled; CompleteEffectVibratorStep(VibrationStepConductor conductor, long startTime, boolean cancelled, VibratorController controller, long pendingVibratorOffDeadline) { super(conductor, startTime, controller, pendingVibratorOffDeadline); HalVibrator vibrator, long pendingVibratorOffDeadline) { super(conductor, startTime, vibrator, pendingVibratorOffDeadline); mCancelled = cancelled; } Loading @@ -53,7 +53,7 @@ final class CompleteEffectVibratorStep extends AbstractVibratorStep { if (mCancelled) { // Double cancelling will just turn off the vibrator right away. return Arrays.asList(new TurnOffVibratorStep(conductor, SystemClock.uptimeMillis(), controller, /* isCleanUp= */ true)); vibrator, /* isCleanUp= */ true)); } return super.cancel(); } Loading @@ -66,7 +66,7 @@ final class CompleteEffectVibratorStep extends AbstractVibratorStep { if (VibrationThread.DEBUG) { Slog.d(VibrationThread.TAG, "Running " + (mCancelled ? "cancel" : "complete") + " vibration" + " step on vibrator " + controller.getVibratorInfo().getId()); + " step on vibrator " + vibrator.getInfo().getId()); } if (mVibratorCompleteCallbackReceived) { // Vibration completion callback was received by this step, just turn if off Loading @@ -76,7 +76,7 @@ final class CompleteEffectVibratorStep extends AbstractVibratorStep { } long now = SystemClock.uptimeMillis(); float currentAmplitude = controller.getCurrentAmplitude(); float currentAmplitude = vibrator.getCurrentAmplitude(); long remainingOnDuration = mPendingVibratorOffDeadline - now - VibrationStepConductor.CALLBACKS_EXTRA_TIMEOUT; Loading @@ -95,13 +95,13 @@ final class CompleteEffectVibratorStep extends AbstractVibratorStep { // Vibration is completing normally, turn off after the deadline in case we // don't receive the callback in time (callback also triggers it right away). return Arrays.asList(new TurnOffVibratorStep(conductor, mPendingVibratorOffDeadline, controller, /* isCleanUp= */ false)); mPendingVibratorOffDeadline, vibrator, /* isCleanUp= */ false)); } } if (VibrationThread.DEBUG) { Slog.d(VibrationThread.TAG, "Ramping down vibrator " + controller.getVibratorInfo().getId() "Ramping down vibrator " + vibrator.getInfo().getId() + " from amplitude " + currentAmplitude + " for " + rampDownDuration + "ms"); } Loading @@ -116,7 +116,7 @@ final class CompleteEffectVibratorStep extends AbstractVibratorStep { float amplitudeTarget = currentAmplitude - amplitudeDelta; return Arrays.asList( new RampOffVibratorStep(conductor, startTime, amplitudeTarget, amplitudeDelta, controller, rampOffVibratorOffDeadline)); vibrator, rampOffVibratorOffDeadline)); } finally { Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR); } Loading Loading
core/java/android/os/CombinedVibration.java +4 −0 Original line number Diff line number Diff line Loading @@ -906,6 +906,10 @@ public abstract class CombinedVibration implements Parcelable { for (int i = 0; i < mEffects.size(); i++) { CombinedVibration vibration = mEffects.get(i); CombinedVibration newVibration = vibration.adapt(adapter); if (newVibration == null) { // The vibration effect contains unsupported segments and cannot be played. return null; } combination.addNext(newVibration, mDelays.get(i)); hasSameEffects &= vibration.equals(newVibration); } Loading
services/art-wear-profile +3 −3 Original line number Diff line number Diff line Loading @@ -1254,8 +1254,8 @@ Lcom/android/server/utils/WatchedSparseBooleanMatrix; Lcom/android/server/utils/WatchedSparseIntArray; Lcom/android/server/utils/WatchedSparseSetArray; Lcom/android/server/utils/Watcher; Lcom/android/server/vibrator/HalVibrator$Callbacks; Lcom/android/server/vibrator/VibratorController$NativeWrapper; Lcom/android/server/vibrator/VibratorController$OnVibrationCompleteListener; Lcom/android/server/vibrator/VibratorManagerService$VibratorManagerNativeCallbacks; Lcom/android/server/vibrator/VibratorManagerService; Lcom/android/server/wm/AbsAppSnapshotController; Loading Loading @@ -19822,14 +19822,14 @@ PLcom/android/server/vibrator/VibratorController$$ExternalSyntheticLambda0;-><in PLcom/android/server/vibrator/VibratorController$NativeWrapper;-><init>()V PLcom/android/server/vibrator/VibratorController$NativeWrapper;->compose([Landroid/os/vibrator/PrimitiveSegment;J)J PLcom/android/server/vibrator/VibratorController$NativeWrapper;->getInfo(Landroid/os/VibratorInfo$Builder;)Z PLcom/android/server/vibrator/VibratorController$NativeWrapper;->init(ILcom/android/server/vibrator/VibratorController$OnVibrationCompleteListener;)V PLcom/android/server/vibrator/VibratorController$NativeWrapper;->init(ILcom/android/server/vibrator/HalVibrator$Callbacks;)V PLcom/android/server/vibrator/VibratorController$NativeWrapper;->off()V PLcom/android/server/vibrator/VibratorController$NativeWrapper;->on(JJ)J PLcom/android/server/vibrator/VibratorController$NativeWrapper;->perform(JJJ)J PLcom/android/server/vibrator/VibratorController$NativeWrapper;->setAmplitude(F)V PLcom/android/server/vibrator/VibratorController$NativeWrapper;->setExternalControl(Z)V PLcom/android/server/vibrator/VibratorController$VibratorState;-><clinit>()V PLcom/android/server/vibrator/VibratorController;-><init>(ILcom/android/server/vibrator/VibratorController$OnVibrationCompleteListener;Lcom/android/server/vibrator/VibratorController$NativeWrapper;)V PLcom/android/server/vibrator/VibratorController;-><init>(ILcom/android/server/vibrator/HalVibrator$Callbacks;Lcom/android/server/vibrator/VibratorController$NativeWrapper;)V PLcom/android/server/vibrator/VibratorController;->dump(Landroid/util/IndentingPrintWriter;)V HPLcom/android/server/vibrator/VibratorController;->off()V PLcom/android/server/vibrator/VibratorController;->on(Landroid/os/vibrator/PrebakedSegment;J)J
services/core/java/com/android/server/vibrator/AbstractComposedVibratorStep.java +5 −5 Original line number Diff line number Diff line Loading @@ -33,7 +33,7 @@ abstract class AbstractComposedVibratorStep extends AbstractVibratorStep { /** * @param conductor The {@link VibrationStepConductor} for these steps. * @param startTime The time to schedule this step in the conductor. * @param controller The vibrator that is playing the effect. * @param vibrator The vibrator that is playing the effect. * @param effect The effect being played in this step. * @param index The index of the next segment to be played by this step * @param pendingVibratorOffDeadline The time the vibrator is expected to complete any Loading @@ -42,9 +42,9 @@ abstract class AbstractComposedVibratorStep extends AbstractVibratorStep { * be used to play effects back-to-back. */ AbstractComposedVibratorStep(VibrationStepConductor conductor, long startTime, VibratorController controller, VibrationEffect.Composed effect, int index, HalVibrator vibrator, VibrationEffect.Composed effect, int index, long pendingVibratorOffDeadline) { super(conductor, startTime, controller, pendingVibratorOffDeadline); super(conductor, startTime, vibrator, pendingVibratorOffDeadline); this.effect = effect; this.segmentIndex = index; } Loading Loading @@ -116,7 +116,7 @@ abstract class AbstractComposedVibratorStep extends AbstractVibratorStep { getVibration().stats.reportRepetition(loopSegmentsPlayed / loopSize); nextSegmentIndex = repeatIndex + ((nextSegmentIndex - effectSize) % loopSize); } Step nextStep = conductor.nextVibrateStep(nextStartTime, controller, effect, Step nextStep = conductor.nextVibrateStep(nextStartTime, vibrator, effect, nextSegmentIndex, mPendingVibratorOffDeadline); return List.of(nextStep); } Loading @@ -124,6 +124,6 @@ abstract class AbstractComposedVibratorStep extends AbstractVibratorStep { /** Return next steps for cancelling the vibration playback. */ protected List<Step> cancelStep() { return List.of(new CompleteEffectVibratorStep(conductor, SystemClock.uptimeMillis(), /* cancelled= */ true, controller, /* pendingVibratorOffDeadline= */ 0)); /* cancelled= */ true, vibrator, /* pendingVibratorOffDeadline= */ 0)); } }
services/core/java/com/android/server/vibrator/AbstractVibratorStep.java +9 −9 Original line number Diff line number Diff line Loading @@ -23,9 +23,9 @@ import android.util.Slog; import java.util.Arrays; import java.util.List; /** Represent a step on a single vibrator that plays a command on {@link VibratorController}. */ /** Represent a step on a single vibrator that plays a command on {@link HalVibrator}. */ abstract class AbstractVibratorStep extends Step { public final VibratorController controller; public final HalVibrator vibrator; long mVibratorOnResult; long mPendingVibratorOffDeadline; Loading @@ -35,21 +35,21 @@ abstract class AbstractVibratorStep extends Step { * @param conductor The VibrationStepConductor for these steps. * @param startTime The time to schedule this step in the * {@link VibrationStepConductor}. * @param controller The vibrator that is playing the effect. * @param vibrator The vibrator that is playing the effect. * @param pendingVibratorOffDeadline The time the vibrator is expected to complete any * previous vibration and turn off. This is used to allow this step to * be triggered when the completion callback is received, and can * be used to play effects back-to-back. */ AbstractVibratorStep(VibrationStepConductor conductor, long startTime, VibratorController controller, long pendingVibratorOffDeadline) { HalVibrator vibrator, long pendingVibratorOffDeadline) { super(conductor, startTime); this.controller = controller; this.vibrator = vibrator; mPendingVibratorOffDeadline = pendingVibratorOffDeadline; } public int getVibratorId() { return controller.getVibratorInfo().getId(); return vibrator.getInfo().getId(); } @Override Loading Loading @@ -82,7 +82,7 @@ abstract class AbstractVibratorStep extends Step { @Override public List<Step> cancel() { return Arrays.asList(new CompleteEffectVibratorStep(conductor, SystemClock.uptimeMillis(), /* cancelled= */ true, controller, mPendingVibratorOffDeadline)); /* cancelled= */ true, vibrator, mPendingVibratorOffDeadline)); } @Override Loading Loading @@ -126,7 +126,7 @@ abstract class AbstractVibratorStep extends Step { } // Make sure we ignore any pending callback from old vibration commands. conductor.nextVibratorCallbackStepId(getVibratorId()); controller.off(); vibrator.off(); getVibration().stats.reportVibratorOff(); mPendingVibratorOffDeadline = 0; } Loading @@ -136,7 +136,7 @@ abstract class AbstractVibratorStep extends Step { Slog.d(VibrationThread.TAG, "Amplitude changed on vibrator " + getVibratorId() + " to " + amplitude); } controller.setAmplitude(amplitude); vibrator.setAmplitude(amplitude); getVibration().stats.reportSetAmplitude(); } }
services/core/java/com/android/server/vibrator/CompleteEffectVibratorStep.java +8 −8 Original line number Diff line number Diff line Loading @@ -35,8 +35,8 @@ final class CompleteEffectVibratorStep extends AbstractVibratorStep { private final boolean mCancelled; CompleteEffectVibratorStep(VibrationStepConductor conductor, long startTime, boolean cancelled, VibratorController controller, long pendingVibratorOffDeadline) { super(conductor, startTime, controller, pendingVibratorOffDeadline); HalVibrator vibrator, long pendingVibratorOffDeadline) { super(conductor, startTime, vibrator, pendingVibratorOffDeadline); mCancelled = cancelled; } Loading @@ -53,7 +53,7 @@ final class CompleteEffectVibratorStep extends AbstractVibratorStep { if (mCancelled) { // Double cancelling will just turn off the vibrator right away. return Arrays.asList(new TurnOffVibratorStep(conductor, SystemClock.uptimeMillis(), controller, /* isCleanUp= */ true)); vibrator, /* isCleanUp= */ true)); } return super.cancel(); } Loading @@ -66,7 +66,7 @@ final class CompleteEffectVibratorStep extends AbstractVibratorStep { if (VibrationThread.DEBUG) { Slog.d(VibrationThread.TAG, "Running " + (mCancelled ? "cancel" : "complete") + " vibration" + " step on vibrator " + controller.getVibratorInfo().getId()); + " step on vibrator " + vibrator.getInfo().getId()); } if (mVibratorCompleteCallbackReceived) { // Vibration completion callback was received by this step, just turn if off Loading @@ -76,7 +76,7 @@ final class CompleteEffectVibratorStep extends AbstractVibratorStep { } long now = SystemClock.uptimeMillis(); float currentAmplitude = controller.getCurrentAmplitude(); float currentAmplitude = vibrator.getCurrentAmplitude(); long remainingOnDuration = mPendingVibratorOffDeadline - now - VibrationStepConductor.CALLBACKS_EXTRA_TIMEOUT; Loading @@ -95,13 +95,13 @@ final class CompleteEffectVibratorStep extends AbstractVibratorStep { // Vibration is completing normally, turn off after the deadline in case we // don't receive the callback in time (callback also triggers it right away). return Arrays.asList(new TurnOffVibratorStep(conductor, mPendingVibratorOffDeadline, controller, /* isCleanUp= */ false)); mPendingVibratorOffDeadline, vibrator, /* isCleanUp= */ false)); } } if (VibrationThread.DEBUG) { Slog.d(VibrationThread.TAG, "Ramping down vibrator " + controller.getVibratorInfo().getId() "Ramping down vibrator " + vibrator.getInfo().getId() + " from amplitude " + currentAmplitude + " for " + rampDownDuration + "ms"); } Loading @@ -116,7 +116,7 @@ final class CompleteEffectVibratorStep extends AbstractVibratorStep { float amplitudeTarget = currentAmplitude - amplitudeDelta; return Arrays.asList( new RampOffVibratorStep(conductor, startTime, amplitudeTarget, amplitudeDelta, controller, rampOffVibratorOffDeadline)); vibrator, rampOffVibratorOffDeadline)); } finally { Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR); } Loading