Merge "Don't take the conductor lock for syncing vibrations." into tm-dev
This commit is contained in:
@@ -189,9 +189,8 @@ final class StartSequentialEffectStep extends Step {
|
|||||||
// vibrating different sets of vibrators in parallel. The manager can only prepareSynced
|
// vibrating different sets of vibrators in parallel. The manager can only prepareSynced
|
||||||
// one set of vibrators at a time.
|
// one set of vibrators at a time.
|
||||||
// This property is guaranteed by there only being one thread (VibrationThread) executing
|
// This property is guaranteed by there only being one thread (VibrationThread) executing
|
||||||
// one Step at a time, so there's no need to hold the state lock.
|
// one Step at a time, so there's no need to hold the state lock. Callbacks will be
|
||||||
// TODO: remove the large locked block in a dedicated change.
|
// delivered asynchronously but enqueued until the step processing is finished.
|
||||||
synchronized (conductor.mLock) {
|
|
||||||
boolean hasPrepared = false;
|
boolean hasPrepared = false;
|
||||||
boolean hasTriggered = false;
|
boolean hasTriggered = false;
|
||||||
long maxDuration = 0;
|
long maxDuration = 0;
|
||||||
@@ -230,7 +229,6 @@ final class StartSequentialEffectStep extends Step {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
private long startVibrating(AbstractVibratorStep step, List<Step> nextSteps) {
|
private long startVibrating(AbstractVibratorStep step, List<Step> nextSteps) {
|
||||||
nextSteps.addAll(step.play());
|
nextSteps.addAll(step.play());
|
||||||
|
|||||||
@@ -242,8 +242,9 @@ final class VibrationThread extends Thread implements IBinder.DeathRecipient {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Only run the next vibration step if we didn't have to wait in this loop.
|
// Only run the next vibration step if we didn't have to wait in this loop.
|
||||||
// If we waited then the queue may have changed, so loop again to re-evaluate
|
// If we waited then the queue may have changed or the wait could have been
|
||||||
// the scheduling of the queue top element.
|
// interrupted by a cancel call, so loop again to re-evaluate the scheduling of
|
||||||
|
// the queue top element.
|
||||||
if (waitMillisBeforeNextStep <= 0) {
|
if (waitMillisBeforeNextStep <= 0) {
|
||||||
if (DEBUG) {
|
if (DEBUG) {
|
||||||
Slog.d(TAG, "Play vibration consuming next step...");
|
Slog.d(TAG, "Play vibration consuming next step...");
|
||||||
|
|||||||
Reference in New Issue
Block a user