From 94c0f2645e2ae6221d8cefe20a3d048387e27000 Mon Sep 17 00:00:00 2001 From: Magnus Jedvert Date: Wed, 12 Dec 2018 17:35:28 +0100 Subject: [PATCH] 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 Commit-Queue: Magnus Jedvert Cr-Commit-Position: refs/heads/master@{#25999} --- sdk/android/api/org/webrtc/EglRenderer.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sdk/android/api/org/webrtc/EglRenderer.java b/sdk/android/api/org/webrtc/EglRenderer.java index c56798b05b..c36952714e 100644 --- a/sdk/android/api/org/webrtc/EglRenderer.java +++ b/sdk/android/api/org/webrtc/EglRenderer.java @@ -274,6 +274,8 @@ public class EglRenderer implements VideoSink { 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;