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(); }); }