Effect: Remove extra wait on taskExecutor release()

This future.get() duplicates the wait done in
singleThreadExecutorService.awaitTermination(). If awaitTermination times out, this future.get() would also result in unnecessary blocking.

PiperOrigin-RevId: 536442153
(cherry picked from commit 1c172e0bed7937282fca630efde497319f2ae82a)
This commit is contained in:
huangdarwin 2023-05-30 17:29:19 +00:00 committed by Tofunmi Adigun-Hameed
parent 6e74b1770c
commit 2713f81fd0

View File

@ -24,7 +24,6 @@ import androidx.media3.common.VideoFrameProcessor;
import androidx.media3.common.util.UnstableApi; import androidx.media3.common.util.UnstableApi;
import java.util.ArrayDeque; import java.util.ArrayDeque;
import java.util.concurrent.CountDownLatch; import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService; import java.util.concurrent.ExecutorService;
import java.util.concurrent.Future; import java.util.concurrent.Future;
import java.util.concurrent.RejectedExecutionException; import java.util.concurrent.RejectedExecutionException;
@ -150,16 +149,13 @@ import java.util.concurrent.RejectedExecutionException;
shouldCancelTasks = true; shouldCancelTasks = true;
highPriorityTasks.clear(); highPriorityTasks.clear();
} }
Future<?> releaseFuture = Future<?> unused =
wrapTaskAndSubmitToExecutorService(releaseTask, /* isFlushOrReleaseTask= */ true); wrapTaskAndSubmitToExecutorService(releaseTask, /* isFlushOrReleaseTask= */ true);
singleThreadExecutorService.shutdown(); singleThreadExecutorService.shutdown();
try { if (!singleThreadExecutorService.awaitTermination(releaseWaitTimeMs, MILLISECONDS)) {
if (!singleThreadExecutorService.awaitTermination(releaseWaitTimeMs, MILLISECONDS)) { listener.onError(
listener.onError(new VideoFrameProcessingException("Release timed out")); new VideoFrameProcessingException(
} "Release timed out. OpenGL resources may not be cleaned up properly."));
releaseFuture.get();
} catch (ExecutionException e) {
listener.onError(new VideoFrameProcessingException(e));
} }
} }