From ba4b96d2c1acb15830dd75cef8173eab12282444 Mon Sep 17 00:00:00 2001 From: tonihei Date: Wed, 30 Aug 2023 12:18:28 -0700 Subject: [PATCH] Prevent forwarding of zero video size to Leanback Leanback isn't prepared to handle these values and will throw ArithmeticExceptions. Issue: androidx/media#617 PiperOrigin-RevId: 561413740 --- RELEASENOTES.md | 3 +++ .../androidx/media3/ui/leanback/LeanbackPlayerAdapter.java | 5 +++++ 2 files changed, 8 insertions(+) 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.