Revert "Replace instead of queueing render updates."

This reverts commit 76960dfdb638b5bee2f08f41236ea2a25a6aab08.

Reason for revert: Speculative rollback (performance).

Original change's description:
> Replace instead of queueing render updates.
>
> Bug: webrtc:351858995
> Change-Id: I6c07d71afeae886ff6a20509bca5b5c65f131e41
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/356800
> Reviewed-by: Fabian Bergmark <fabianbergmark@google.com>
> Reviewed-by: Zoé Lepaul <xalep@webrtc.org>
> Commit-Queue: Ranveer Aggarwal‎ <ranvr@webrtc.org>
> Cr-Commit-Position: refs/heads/main@{#42617}

Bug: webrtc:351858995, b/355009708
Change-Id: I0552238732a940fcb06543960fc563b9bd7ca6f1
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/358140
Reviewed-by: Christoffer Dewerin <jansson@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Owners-Override: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42696}
This commit is contained in:
Mirko Bonadei 2024-07-30 16:07:00 +00:00 committed by WebRTC LUCI CQ
parent 0012bfa128
commit 6b0de3f05b

View File

@ -18,7 +18,6 @@ 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. */
@ -123,7 +122,7 @@ public class EglThread implements RenderSynchronizer.Listener {
private final HandlerWithExceptionCallbacks handler;
private final EglConnection eglConnection;
private final RenderSynchronizer renderSynchronizer;
private Optional<RenderUpdate> pendingRenderUpdate = Optional.empty();
private final List<RenderUpdate> pendingRenderUpdates = new ArrayList<>();
private boolean renderWindowOpen = true;
private EglThread(
@ -194,7 +193,7 @@ public class EglThread implements RenderSynchronizer.Listener {
if (renderWindowOpen) {
update.update(/* runsInline = */true);
} else {
pendingRenderUpdate = Optional.of(update);
pendingRenderUpdates.add(update);
}
}
@ -203,9 +202,10 @@ public class EglThread implements RenderSynchronizer.Listener {
handler.post(
() -> {
renderWindowOpen = true;
pendingRenderUpdate.ifPresent(
renderUpdate -> renderUpdate.update(/* runsInline = */ false));
pendingRenderUpdate = Optional.empty();
for (RenderUpdate update : pendingRenderUpdates) {
update.update(/* runsInline = */false);
}
pendingRenderUpdates.clear();
});
}