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: * Core Library:
* Fix track selection in `StyledPlayerControlView` when using * Fix track selection in `StyledPlayerControlView` when using
`ForwardingPlayer`. `ForwardingPlayer`.
* Fix `FlagSet#equals` on API levels below 24.
* Extractors: * Extractors:
* Support TS packets without PTS flag * Support TS packets without PTS flag
([#9294](https://github.com/google/ExoPlayer/issues/9294)). ([#9294](https://github.com/google/ExoPlayer/issues/9294)).

View File

@ -211,11 +211,33 @@ public final class FlagSet {
return false; return false;
} }
FlagSet that = (FlagSet) o; FlagSet that = (FlagSet) o;
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); return flags.equals(that.flags);
} }
}
@Override @Override
public int hashCode() { public int 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(); return flags.hashCode();
} }
} }
}