Remove call to set wakeLock WorkSource from VibrationThread constructor

A new  VibrationThread might be created and dropped if the ongoing
thread takes long to be finished and a new vibration arrived to the
service.

The wakelock is only acquired when a thread starts, so move the calls to
configure the worksource to the run() method.

Fix: 193742818
Test: manual
Change-Id: I7d7953ec9e065bcec78110b44daf3ef57693164d
This commit is contained in:
Lais Andrade
2021-07-15 19:57:10 +01:00
parent 94ef35d90a
commit 56663ddbe7

View File

@@ -98,7 +98,7 @@ final class VibrationThread extends Thread implements IBinder.DeathRecipient {
}
private final Object mLock = new Object();
private final WorkSource mWorkSource = new WorkSource();
private final WorkSource mWorkSource;
private final PowerManager.WakeLock mWakeLock;
private final IBatteryStats mBatteryStatsService;
private final VibrationSettings mVibrationSettings;
@@ -119,9 +119,8 @@ final class VibrationThread extends Thread implements IBinder.DeathRecipient {
mVibrationSettings = vibrationSettings;
mDeviceEffectAdapter = effectAdapter;
mCallbacks = callbacks;
mWorkSource = new WorkSource(mVibration.uid);
mWakeLock = wakeLock;
mWorkSource.set(vib.uid);
mWakeLock.setWorkSource(mWorkSource);
mBatteryStatsService = batteryStatsService;
CombinedVibration effect = vib.getEffect();
@@ -152,6 +151,7 @@ final class VibrationThread extends Thread implements IBinder.DeathRecipient {
@Override
public void run() {
Process.setThreadPriority(Process.THREAD_PRIORITY_URGENT_DISPLAY);
mWakeLock.setWorkSource(mWorkSource);
mWakeLock.acquire();
try {
mVibration.token.linkToDeath(this, 0);