diff options
author | 2022-10-13 23:39:55 +0800 | |
---|---|---|
committer | 2022-10-21 11:19:17 +0800 | |
commit | 044fce0b826f2da3a192aac56785b5089143e693 (patch) | |
tree | a245998cde303734e7c77b51c12873f0c66e335e /opengl | |
parent | e85f271021e9d2a8fa9f69c2b0a647db3723dff6 (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.java | 10 |
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(); } |