Change-Id: I36102f13962df2093c1e35fb40081ead647eff32
* @hide
*/
public void clearNames() {
- mNames = null;
+ if (mNames != null) {
+ mNames = null;
+ // Clear out any duplicate uids now that we don't have names to disambiguate them.
+ int destIndex = 1;
+ int newNum = mNum;
+ for (int sourceIndex = 1; sourceIndex < mNum; sourceIndex++) {
+ if (mUids[sourceIndex] == mUids[sourceIndex - 1]) {
+ newNum--;
+ } else {
+ mUids[destIndex] = mUids[sourceIndex];
+ destIndex++;
+ }
+ }
+ mNum = newNum;
+ }
}
/**
boolean changed = true;
if (ws == null) {
mWorkSource = null;
- } else if (mWorkSource == null) {
- changed = mWorkSource != null;
- mWorkSource = new WorkSource(ws);
} else {
- changed = mWorkSource.diff(ws);
- if (changed) {
- mWorkSource.set(ws);
+ ws.clearNames();
+ if (mWorkSource == null) {
+ changed = mWorkSource != null;
+ mWorkSource = new WorkSource(ws);
+ } else {
+ changed = mWorkSource.diff(ws);
+ if (changed) {
+ mWorkSource.set(ws);
+ }
}
}
if (changed && mHeld) {