From 7ea74444f37e1340fdde2fbf7801c746c3c27247 Mon Sep 17 00:00:00 2001 From: kimvde Date: Mon, 5 Dec 2022 18:05:28 +0000 Subject: [PATCH] Avoid sending message on dead thread PiperOrigin-RevId: 493040714 --- .../androidx/media3/transformer/TransformerInternal.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/TransformerInternal.java b/libraries/transformer/src/main/java/androidx/media3/transformer/TransformerInternal.java index 189cc082ee..90d3345514 100644 --- a/libraries/transformer/src/main/java/androidx/media3/transformer/TransformerInternal.java +++ b/libraries/transformer/src/main/java/androidx/media3/transformer/TransformerInternal.java @@ -200,6 +200,9 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; } public void cancel() { + if (released) { + return; + } internalHandler .obtainMessage( MSG_END, END_REASON_CANCELLED, /* unused */ 0, /* transformationException */ null) @@ -333,6 +336,9 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; releaseTransformationException = TransformationException.createForUnexpected(e); cancelException = e; } + // Quit thread lazily so that all events that got triggered when releasing the AssetLoader are + // still delivered. + internalHandler.post(internalHandlerThread::quitSafely); } if (!forCancellation) { @@ -352,7 +358,6 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; } } - internalHandlerThread.quitSafely(); cancellingConditionVariable.open(); }