From 76960dfdb638b5bee2f08f41236ea2a25a6aab08 Mon Sep 17 00:00:00 2001 From: Ranveer Aggarwal Date: Tue, 9 Jul 2024 15:39:07 +0200 Subject: [PATCH] Replace instead of queueing render updates. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bug: webrtc:351858995 Change-Id: I6c07d71afeae886ff6a20509bca5b5c65f131e41 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/356800 Reviewed-by: Fabian Bergmark Reviewed-by: Zoé Lepaul Commit-Queue: Ranveer Aggarwal‎ Cr-Commit-Position: refs/heads/main@{#42617} --- sdk/android/api/org/webrtc/EglThread.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/sdk/android/api/org/webrtc/EglThread.java b/sdk/android/api/org/webrtc/EglThread.java index 73323d59c8..ed5e0175ef 100644 --- a/sdk/android/api/org/webrtc/EglThread.java +++ b/sdk/android/api/org/webrtc/EglThread.java @@ -18,6 +18,7 @@ import androidx.annotation.GuardedBy; import androidx.annotation.Nullable; import java.util.ArrayList; import java.util.List; +import java.util.Optional; import org.webrtc.EglBase.EglConnection; /** EGL graphics thread that allows multiple clients to share the same underlying EGLContext. */ @@ -122,7 +123,7 @@ public class EglThread implements RenderSynchronizer.Listener { private final HandlerWithExceptionCallbacks handler; private final EglConnection eglConnection; private final RenderSynchronizer renderSynchronizer; - private final List pendingRenderUpdates = new ArrayList<>(); + private Optional pendingRenderUpdate = Optional.empty(); private boolean renderWindowOpen = true; private EglThread( @@ -193,7 +194,7 @@ public class EglThread implements RenderSynchronizer.Listener { if (renderWindowOpen) { update.update(/* runsInline = */true); } else { - pendingRenderUpdates.add(update); + pendingRenderUpdate = Optional.of(update); } } @@ -202,10 +203,9 @@ public class EglThread implements RenderSynchronizer.Listener { handler.post( () -> { renderWindowOpen = true; - for (RenderUpdate update : pendingRenderUpdates) { - update.update(/* runsInline = */false); - } - pendingRenderUpdates.clear(); + pendingRenderUpdate.ifPresent( + renderUpdate -> renderUpdate.update(/* runsInline = */ false)); + pendingRenderUpdate = Optional.empty(); }); }