mirror of
https://github.com/samsonjs/media.git
synced 2026-03-28 09:55:48 +00:00
Clarify threading requirement for MediaController.releaseFuture
And remove unnecessary check for isDone.
Issue: androidx/media#345
PiperOrigin-RevId: 525999615
(cherry picked from commit 186f3d5c77)
This commit is contained in:
parent
0f6a1eb6b8
commit
3f5d777f38
1 changed files with 7 additions and 4 deletions
|
|
@ -516,16 +516,19 @@ public class MediaController implements Player {
|
|||
/**
|
||||
* Releases the future controller returned by {@link Builder#buildAsync()}. It makes sure that the
|
||||
* controller is released by canceling the future if the future is not yet done.
|
||||
*
|
||||
* <p>Must be called on the {@linkplain #getApplicationLooper() application thread} of the media
|
||||
* controller.
|
||||
*/
|
||||
public static void releaseFuture(Future<? extends MediaController> controllerFuture) {
|
||||
if (!controllerFuture.isDone()) {
|
||||
controllerFuture.cancel(/* mayInterruptIfRunning= */ true);
|
||||
if (controllerFuture.cancel(/* mayInterruptIfRunning= */ true)) {
|
||||
// Successfully canceled the Future. The controller will be released by MediaControllerHolder.
|
||||
return;
|
||||
}
|
||||
MediaController controller;
|
||||
try {
|
||||
controller = controllerFuture.get();
|
||||
} catch (CancellationException | ExecutionException | InterruptedException e) {
|
||||
controller = Futures.getDone(controllerFuture);
|
||||
} catch (CancellationException | ExecutionException e) {
|
||||
return;
|
||||
}
|
||||
controller.release();
|
||||
|
|
|
|||
Loading…
Reference in a new issue