summaryrefslogtreecommitdiff
path: root/opengl
diff options
context:
space:
mode:
author Bowen Li <libowen1@xiaomi.corp-partner.google.com> 2022-10-13 23:39:55 +0800
committer Bowen Li <libowen1@xiaomi.corp-partner.google.com> 2022-10-21 11:19:17 +0800
commit044fce0b826f2da3a192aac56785b5089143e693 (patch)
treea245998cde303734e7c77b51c12873f0c66e335e /opengl
parente85f271021e9d2a8fa9f69c2b0a647db3723dff6 (diff)
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 <libowen1@xiaomi.corp-partner.google.com> Change-Id: I8d28ad2bfc077db6343e04d3f454cd06055f9b52
Diffstat (limited to 'opengl')
-rw-r--r--opengl/java/android/opengl/GLSurfaceView.java10
1 files changed, 9 insertions, 1 deletions
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();
}