From f3c861a6de0552ec021bc98b72e3de9c6be3c370 Mon Sep 17 00:00:00 2001 From: hschlueter Date: Mon, 28 Mar 2022 13:30:05 +0100 Subject: [PATCH] Check thread name for GL methods. The thread name is used to verify the thread in both createOpenGlObjectsAndInitializeFrameProcessors() and processFrame(). Also remove glThread field that was only used for this verification. PiperOrigin-RevId: 437730804 --- .../exoplayer2/transformer/FrameProcessorChain.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/FrameProcessorChain.java b/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/FrameProcessorChain.java index 5c840e044f..cc10131c7c 100644 --- a/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/FrameProcessorChain.java +++ b/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/FrameProcessorChain.java @@ -72,8 +72,6 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull; private final EGLContext eglContext; /** Some OpenGL commands may block, so all OpenGL commands are run on a background thread. */ private final ExecutorService singleThreadExecutorService; - /** The {@link #singleThreadExecutorService} thread. */ - private @MonotonicNonNull Thread glThread; /** Futures corresponding to the executor service's pending tasks. */ private final ConcurrentLinkedQueue> futures; /** Number of frames {@link #registerInputFrame() registered} but not fully processed. */ @@ -355,7 +353,8 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull; @EnsuresNonNull("eglSurface") private Void createOpenGlObjectsAndInitializeFrameProcessors( Surface outputSurface, @Nullable SurfaceView debugSurfaceView) throws IOException { - glThread = Thread.currentThread(); + checkState(Thread.currentThread().getName().equals(THREAD_NAME)); + if (enableExperimentalHdrEditing) { // TODO(b/209404935): Don't assume BT.2020 PQ input/output. eglSurface = GlUtil.getEglSurfaceBt2020Pq(eglDisplay, outputSurface); @@ -396,7 +395,7 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull; */ @RequiresNonNull({"inputSurfaceTexture", "eglSurface"}) private void processFrame() { - checkState(Thread.currentThread().equals(glThread)); + checkState(Thread.currentThread().getName().equals(THREAD_NAME)); if (frameProcessors.isEmpty()) { GlUtil.focusEglSurface(eglDisplay, eglContext, eglSurface, outputWidth, outputHeight);