From 9cc7dd0dbe7469d63ba949e996f046b151a485d7 Mon Sep 17 00:00:00 2001 From: tonihei Date: Tue, 15 Apr 2025 05:37:58 -0700 Subject: [PATCH] Ensure DefaultAudioSink doesn't store non-application Context The Context is currently passed right down from ExoPlayer.Builder without ever converting it to the application context. This may cause memory leaks if a Player is kept across activities/service lifecycles. PiperOrigin-RevId: 747835487 --- .../exoplayer/audio/DefaultAudioOffloadSupportProvider.java | 2 +- .../java/androidx/media3/exoplayer/audio/DefaultAudioSink.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/DefaultAudioOffloadSupportProvider.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/DefaultAudioOffloadSupportProvider.java index a5d285d917..da98a4d94b 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/DefaultAudioOffloadSupportProvider.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/DefaultAudioOffloadSupportProvider.java @@ -62,7 +62,7 @@ public final class DefaultAudioOffloadSupportProvider * offload variable rate support. */ public DefaultAudioOffloadSupportProvider(@Nullable Context context) { - this.context = context; + this.context = context == null ? null : context.getApplicationContext(); } @Override diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/DefaultAudioSink.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/DefaultAudioSink.java index 2c75ecafc6..e598ca6fa4 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/DefaultAudioSink.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/DefaultAudioSink.java @@ -592,7 +592,7 @@ public final class DefaultAudioSink implements AudioSink { @RequiresNonNull("#1.audioProcessorChain") private DefaultAudioSink(Builder builder) { - context = builder.context; + context = builder.context == null ? null : builder.context.getApplicationContext(); audioAttributes = AudioAttributes.DEFAULT; audioCapabilities = context != null ? null : builder.audioCapabilities; audioProcessorChain = builder.audioProcessorChain;