Chromium Code Reviews

Unified Diff: talk/app/webrtc/java/android/org/webrtc/SurfaceViewRenderer.java

Issue 1418223002: SurfaceViewRenderer: Remove use of quitSafely() because it's API lvl 18 (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: talk/app/webrtc/java/android/org/webrtc/SurfaceViewRenderer.java
diff --git a/talk/app/webrtc/java/android/org/webrtc/SurfaceViewRenderer.java b/talk/app/webrtc/java/android/org/webrtc/SurfaceViewRenderer.java
index 99f33d7d07986b93c943278f72552a459e6cb46c..18df062326c9e4d7703479ec5c47a5e081b07ea4 100644
--- a/talk/app/webrtc/java/android/org/webrtc/SurfaceViewRenderer.java
+++ b/talk/app/webrtc/java/android/org/webrtc/SurfaceViewRenderer.java
@@ -40,6 +40,8 @@ import android.view.SurfaceView;
import org.webrtc.Logging;
+import java.util.concurrent.CountDownLatch;
+
import javax.microedition.khronos.egl.EGLContext;
/**
@@ -190,6 +192,7 @@ public class SurfaceViewRenderer extends SurfaceView
* don't call this function, the GL resources might leak.
*/
public void release() {
+ final CountDownLatch eglCleanupBarrier = new CountDownLatch(1);
synchronized (handlerLock) {
if (renderThreadHandler == null) {
Logging.d(TAG, "Already released");
@@ -214,13 +217,15 @@ public class SurfaceViewRenderer extends SurfaceView
}
eglBase.release();
eglBase = null;
+ eglCleanupBarrier.countDown();
}
});
// Don't accept any more frames or messages to the render thread.
renderThreadHandler = null;
}
- // Quit safely to make sure the EGL/GL cleanup posted above is executed.
- renderThread.quitSafely();
+ // Make sure the EGL/GL cleanup posted above is executed.
+ ThreadUtils.awaitUninterruptibly(eglCleanupBarrier);
+ renderThread.quit();
synchronized (frameLock) {
if (pendingFrame != null) {
VideoRenderer.renderFrameDone(pendingFrame);
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine