From 044fce0b826f2da3a192aac56785b5089143e693 Mon Sep 17 00:00:00 2001 From: Bowen Li Date: Thu, 13 Oct 2022 23:39:55 +0800 Subject: fix lost old callback when continuous call requestRenderAndNotify If continuous call requestRenderAndNotify before trigger old callback, old callback will lose, cause VRI will wait for SV's draw to finish forever not calling finishDraw. Bug: 253536483 Signed-off-by: Bowen Li Change-Id: I8d28ad2bfc077db6343e04d3f454cd06055f9b52 --- opengl/java/android/opengl/GLSurfaceView.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'opengl') diff --git a/opengl/java/android/opengl/GLSurfaceView.java b/opengl/java/android/opengl/GLSurfaceView.java index 75131b0f6b9c..4738318472ea 100644 --- a/opengl/java/android/opengl/GLSurfaceView.java +++ b/opengl/java/android/opengl/GLSurfaceView.java @@ -1667,7 +1667,15 @@ public class GLSurfaceView extends SurfaceView implements SurfaceHolder.Callback mWantRenderNotification = true; mRequestRender = true; mRenderComplete = false; - mFinishDrawingRunnable = finishDrawing; + final Runnable oldCallback = mFinishDrawingRunnable; + mFinishDrawingRunnable = () -> { + if (oldCallback != null) { + oldCallback.run(); + } + if (finishDrawing != null) { + finishDrawing.run(); + } + }; sGLThreadManager.notifyAll(); } -- cgit v1.2.3-59-g8ed1b