From 4ef007cae736c48773406c7c1c3d2f97888f5e47 Mon Sep 17 00:00:00 2001 From: tonihei Date: Fri, 11 Feb 2022 16:33:29 +0000 Subject: [PATCH] Add some missing thread verifications This adds some missing calls to verifyApplicationThread to ExoPlayerImpl. Now all public methods start with this call, except listener registrations because registration after construction on a background thread is allowed and supported. PiperOrigin-RevId: 428009498 --- .../media3/exoplayer/ExoPlayerImpl.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/ExoPlayerImpl.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/ExoPlayerImpl.java index 14a8b20162..1280192eee 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/ExoPlayerImpl.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/ExoPlayerImpl.java @@ -398,6 +398,7 @@ import java.util.concurrent.TimeoutException; @Override @Deprecated public AudioComponent getAudioComponent() { + verifyApplicationThread(); return this; } @@ -405,6 +406,7 @@ import java.util.concurrent.TimeoutException; @Override @Deprecated public VideoComponent getVideoComponent() { + verifyApplicationThread(); return this; } @@ -412,6 +414,7 @@ import java.util.concurrent.TimeoutException; @Override @Deprecated public TextComponent getTextComponent() { + verifyApplicationThread(); return this; } @@ -419,6 +422,7 @@ import java.util.concurrent.TimeoutException; @Override @Deprecated public DeviceComponent getDeviceComponent() { + verifyApplicationThread(); return this; } @@ -492,6 +496,7 @@ import java.util.concurrent.TimeoutException; @Override @Deprecated public void retry() { + verifyApplicationThread(); prepare(); } @@ -922,6 +927,7 @@ import java.util.concurrent.TimeoutException; @Override public void stop() { + verifyApplicationThread(); stop(/* reset= */ false); } @@ -1205,6 +1211,7 @@ import java.util.concurrent.TimeoutException; @Override public @C.VideoScalingMode int getVideoScalingMode() { + verifyApplicationThread(); return videoScalingMode; } @@ -1222,11 +1229,13 @@ import java.util.concurrent.TimeoutException; @Override public @C.VideoChangeFrameRateStrategy int getVideoChangeFrameRateStrategy() { + verifyApplicationThread(); return videoChangeFrameRateStrategy; } @Override public VideoSize getVideoSize() { + verifyApplicationThread(); return videoSize; } @@ -1373,6 +1382,7 @@ import java.util.concurrent.TimeoutException; @Override public AudioAttributes getAudioAttributes() { + verifyApplicationThread(); return audioAttributes; } @@ -1403,6 +1413,7 @@ import java.util.concurrent.TimeoutException; @Override public int getAudioSessionId() { + verifyApplicationThread(); return audioSessionId; } @@ -1414,6 +1425,7 @@ import java.util.concurrent.TimeoutException; @Override public void clearAuxEffectInfo() { + verifyApplicationThread(); setAuxEffectInfo(new AuxEffectInfo(AuxEffectInfo.NO_AUX_EFFECT_ID, /* sendLevel= */ 0f)); } @@ -1432,11 +1444,13 @@ import java.util.concurrent.TimeoutException; @Override public float getVolume() { + verifyApplicationThread(); return volume; } @Override public boolean getSkipSilenceEnabled() { + verifyApplicationThread(); return skipSilenceEnabled; } @@ -1455,6 +1469,7 @@ import java.util.concurrent.TimeoutException; @Override public AnalyticsCollector getAnalyticsCollector() { + verifyApplicationThread(); return analyticsCollector; } @@ -1501,24 +1516,28 @@ import java.util.concurrent.TimeoutException; @Override @Nullable public Format getVideoFormat() { + verifyApplicationThread(); return videoFormat; } @Override @Nullable public Format getAudioFormat() { + verifyApplicationThread(); return audioFormat; } @Override @Nullable public DecoderCounters getVideoDecoderCounters() { + verifyApplicationThread(); return videoDecoderCounters; } @Override @Nullable public DecoderCounters getAudioDecoderCounters() { + verifyApplicationThread(); return audioDecoderCounters; } @@ -1588,6 +1607,7 @@ import java.util.concurrent.TimeoutException; @Override public void setHandleWakeLock(boolean handleWakeLock) { + verifyApplicationThread(); setWakeMode(handleWakeLock ? C.WAKE_MODE_LOCAL : C.WAKE_MODE_NONE); }