Android: One weird trick for avoiding graphics deadlocks
eglDestroyContext has been observed to deadlock with other GL threads
unless the GL program is detached beforehand.
TBR=sakal
NO_TRY=TRUE
Bug: b/120481228
Change-Id: Ie256e745828997b6fee0d62e681f5ef953aa0fe7
Reviewed-on: https://webrtc-review.googlesource.com/c/114164
Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
Commit-Queue: Magnus Jedvert <magjed@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25999}
diff --git a/sdk/android/api/org/webrtc/EglRenderer.java b/sdk/android/api/org/webrtc/EglRenderer.java
index c56798b..c369527 100644
--- a/sdk/android/api/org/webrtc/EglRenderer.java
+++ b/sdk/android/api/org/webrtc/EglRenderer.java
@@ -274,6 +274,8 @@
renderThreadHandler.removeCallbacks(logStatisticsRunnable);
// Release EGL and GL resources on render thread.
renderThreadHandler.postAtFrontOfQueue(() -> {
+ // Detach current shader program.
+ GLES20.glUseProgram(/* program= */ 0);
if (drawer != null) {
drawer.release();
drawer = null;