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}
This commit is contained in:
parent
5d24544378
commit
76960dfdb6
@ -18,6 +18,7 @@ import androidx.annotation.GuardedBy;
|
|||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Optional;
|
||||||
import org.webrtc.EglBase.EglConnection;
|
import org.webrtc.EglBase.EglConnection;
|
||||||
|
|
||||||
/** EGL graphics thread that allows multiple clients to share the same underlying EGLContext. */
|
/** 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 HandlerWithExceptionCallbacks handler;
|
||||||
private final EglConnection eglConnection;
|
private final EglConnection eglConnection;
|
||||||
private final RenderSynchronizer renderSynchronizer;
|
private final RenderSynchronizer renderSynchronizer;
|
||||||
private final List<RenderUpdate> pendingRenderUpdates = new ArrayList<>();
|
private Optional<RenderUpdate> pendingRenderUpdate = Optional.empty();
|
||||||
private boolean renderWindowOpen = true;
|
private boolean renderWindowOpen = true;
|
||||||
|
|
||||||
private EglThread(
|
private EglThread(
|
||||||
@ -193,7 +194,7 @@ public class EglThread implements RenderSynchronizer.Listener {
|
|||||||
if (renderWindowOpen) {
|
if (renderWindowOpen) {
|
||||||
update.update(/* runsInline = */true);
|
update.update(/* runsInline = */true);
|
||||||
} else {
|
} else {
|
||||||
pendingRenderUpdates.add(update);
|
pendingRenderUpdate = Optional.of(update);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -202,10 +203,9 @@ public class EglThread implements RenderSynchronizer.Listener {
|
|||||||
handler.post(
|
handler.post(
|
||||||
() -> {
|
() -> {
|
||||||
renderWindowOpen = true;
|
renderWindowOpen = true;
|
||||||
for (RenderUpdate update : pendingRenderUpdates) {
|
pendingRenderUpdate.ifPresent(
|
||||||
update.update(/* runsInline = */false);
|
renderUpdate -> renderUpdate.update(/* runsInline = */ false));
|
||||||
}
|
pendingRenderUpdate = Optional.empty();
|
||||||
pendingRenderUpdates.clear();
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user