From 7b87530fccd5e65eea1052d9a55f96e72e8085b1 Mon Sep 17 00:00:00 2001 From: Magnus Jedvert Date: Thu, 9 Aug 2018 13:51:42 +0200 Subject: [PATCH] Android: Allow YuvConverter to be reused MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Similar to how GlDrawer and GlTextureFrameBuffer already works, this CL updates YuvConverter so that it can be reused after release() has been called. This makes it more convenient to use, it can be stored in a final variable, and the resources are lazily allocated on first usage. Bug: b/112386285 Change-Id: I437c4c3fd414bc8974df75728f33954b28418e3e Reviewed-on: https://webrtc-review.googlesource.com/93290 Reviewed-by: Magnus Jedvert Reviewed-by: Sami Kalliomäki Commit-Queue: Magnus Jedvert Cr-Commit-Position: refs/heads/master@{#24248} --- sdk/android/api/org/webrtc/YuvConverter.java | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/sdk/android/api/org/webrtc/YuvConverter.java b/sdk/android/api/org/webrtc/YuvConverter.java index be8d43e72c..de02c11c3b 100644 --- a/sdk/android/api/org/webrtc/YuvConverter.java +++ b/sdk/android/api/org/webrtc/YuvConverter.java @@ -93,7 +93,6 @@ public class YuvConverter { private final ThreadUtils.ThreadChecker threadChecker = new ThreadUtils.ThreadChecker(); private final GlTextureFrameBuffer i420TextureFrameBuffer = new GlTextureFrameBuffer(GLES20.GL_RGBA); - private boolean released = false; private final ShaderCallbacks shaderCallbacks = new ShaderCallbacks(); private final GlGenericDrawer drawer = new GlGenericDrawer(FRAGMENT_SHADER, shaderCallbacks); @@ -107,9 +106,6 @@ public class YuvConverter { /** Converts the texture buffer to I420. */ public I420Buffer convert(TextureBuffer inputTextureBuffer) { threadChecker.checkIsOnValidThread(); - if (released) { - throw new IllegalStateException("YuvConverter.convert called on released object"); - } // We draw into a buffer laid out like // // +---------+ @@ -213,8 +209,9 @@ public class YuvConverter { public void release() { threadChecker.checkIsOnValidThread(); - released = true; drawer.release(); i420TextureFrameBuffer.release(); + // Allow this class to be reused. + threadChecker.detachThread(); } }