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
This commit is contained in:
huangdarwin 2023-05-30 17:29:19 +00:00 committed by Tofunmi Adigun-Hameed
parent 06908e1a86
commit 1c172e0bed

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(new VideoFrameProcessingException("Release timed out")); listener.onError(
} new VideoFrameProcessingException(
releaseFuture.get(); "Release timed out. OpenGL resources may not be cleaned up properly."));
} catch (ExecutionException e) {
listener.onError(new VideoFrameProcessingException(e));
} }
} }