am 2d9b513d: Merge "I\'m feeling the good vibrations." into klp-modular-dev

* commit '2d9b513dab78242281bca125b4abc6b8235089a6':
  I'm feeling the good vibrations.
This commit is contained in:
Jeff Brown
2014-05-21 02:38:11 +00:00
committed by Android Git Automerger

View File

@@ -46,6 +46,7 @@ import com.android.internal.app.IAppOpsService;
import com.android.internal.app.IBatteryStats; import com.android.internal.app.IBatteryStats;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.ListIterator; import java.util.ListIterator;
@@ -130,6 +131,10 @@ public class VibratorService extends IVibratorService.Stub
} }
return true; return true;
} }
public boolean isSystemHapticFeedback() {
return (mUid == Process.SYSTEM_UID || mUid == 0) && mRepeat < 0;
}
} }
VibratorService(Context context) { VibratorService(Context context) {
@@ -592,20 +597,32 @@ public class VibratorService extends IVibratorService.Stub
} }
} }
} }
}; }
BroadcastReceiver mIntentReceiver = new BroadcastReceiver() { BroadcastReceiver mIntentReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) { public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) { if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
synchronized (mVibrations) { synchronized (mVibrations) {
doCancelVibrateLocked(); // When the system is entering a non-interactive state, we want
// to cancel vibrations in case a misbehaving app has abandoned
int size = mVibrations.size(); // them. However it may happen that the system is currently playing
for(int i = 0; i < size; i++) { // haptic feedback as part of the transition. So we don't cancel
unlinkVibration(mVibrations.get(i)); // system vibrations.
if (mCurrentVibration != null
&& !mCurrentVibration.isSystemHapticFeedback()) {
doCancelVibrateLocked();
} }
mVibrations.clear(); // Clear all remaining vibrations.
Iterator<Vibration> it = mVibrations.iterator();
while (it.hasNext()) {
Vibration vibration = it.next();
if (vibration != mCurrentVibration) {
unlinkVibration(vibration);
it.remove();
}
}
} }
} }
} }