Fix FlagSet.equals on API levels below 24

PiperOrigin-RevId: 395004645
This commit is contained in:
gyumin 2021-09-06 01:37:11 +01:00 committed by Christos Tsilopoulos
parent e7a7235a47
commit b40a6b86d6
2 changed files with 25 additions and 2 deletions

View File

@ -5,6 +5,7 @@
* Core Library:
* Fix track selection in `StyledPlayerControlView` when using
`ForwardingPlayer`.
* Fix `FlagSet#equals` on API levels below 24.
* Extractors:
* Support TS packets without PTS flag
([#9294](https://github.com/google/ExoPlayer/issues/9294)).

View File

@ -211,11 +211,33 @@ public final class FlagSet {
return false;
}
FlagSet that = (FlagSet) o;
return flags.equals(that.flags);
if (Util.SDK_INT < 24) {
// SparseBooleanArray.equals() is not implemented on API levels below 24.
if (size() != that.size()) {
return false;
}
for (int i = 0; i < size(); i++) {
if (get(i) != that.get(i)) {
return false;
}
}
return true;
} else {
return flags.equals(that.flags);
}
}
@Override
public int hashCode() {
return flags.hashCode();
if (Util.SDK_INT < 24) {
// SparseBooleanArray.hashCode() is not implemented on API levels below 24.
int hashCode = size();
for (int i = 0; i < size(); i++) {
hashCode = 31 * hashCode + get(i);
}
return hashCode;
} else {
return flags.hashCode();
}
}
}