diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 4d3aa27da5..4289b972e9 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -50,6 +50,9 @@ ([#577](https://github.com/androidx/media/issues/577)). * Decoder Extensions (FFmpeg, VP9, AV1, etc.): * MIDI extension: +* Leanback extension: + * Fix bug where disabling a surface can cause an `ArithmeticException` in + Leanback code ([#617](https://github.com/androidx/media/issues/617)). * Cast Extension: * Test Utilities: * Remove deprecated symbols: diff --git a/libraries/ui_leanback/src/main/java/androidx/media3/ui/leanback/LeanbackPlayerAdapter.java b/libraries/ui_leanback/src/main/java/androidx/media3/ui/leanback/LeanbackPlayerAdapter.java index ea0335e035..2fa221a711 100644 --- a/libraries/ui_leanback/src/main/java/androidx/media3/ui/leanback/LeanbackPlayerAdapter.java +++ b/libraries/ui_leanback/src/main/java/androidx/media3/ui/leanback/LeanbackPlayerAdapter.java @@ -286,6 +286,11 @@ public final class LeanbackPlayerAdapter extends PlayerAdapter implements Runnab @SuppressWarnings("nullness:dereference.of.nullable") @Override public void onVideoSizeChanged(VideoSize videoSize) { + if (videoSize.width == 0 || videoSize.height == 0) { + // Do not report unknown or placeholder sizes as Leanback can't handle these cases correctly + // (see https://github.com/androidx/media/issues/617). + return; + } // There's no way to pass pixelWidthHeightRatio to leanback, so we scale the width that we // pass to take it into account. This is necessary to ensure that leanback uses the correct // aspect ratio when playing content with non-square pixels.