Skip to content

Commit b99a1e1

Browse files
committed
Boost field drawing framerate
Packets published without field overlays that happened to land at the end of a telemetry batch would previously prevent any field overlay from being shown from that batch. This doesn't cause flickering, but it does reduce the framerate of field updates. Now the most recent non-empty field overlay is kept in each batch.
1 parent 1e806d0 commit b99a1e1

File tree

1 file changed

+13
-5
lines changed

1 file changed

+13
-5
lines changed

DashboardCore/src/main/java/com/acmerobotics/dashboard/DashboardCore.java

+13-5
Original file line numberDiff line numberDiff line change
@@ -66,12 +66,20 @@ public void run() {
6666
pendingTelemetry.clear();
6767
}
6868

69-
// only the latest packet field overlay is used
69+
// only the latest packet non-empty field overlay is used
7070
// this helps save bandwidth, especially for more complex overlays
71-
for (TelemetryPacket packet : telemetryToSend.subList(0,
72-
telemetryToSend.size() - 1)) {
73-
packet.field().clear();
74-
packet.fieldOverlay().clear();
71+
for (int i = telemetryToSend.size() - 1; i >= 0; i--) {
72+
TelemetryPacket packet = telemetryToSend.get(i);
73+
if (!packet.fieldOverlay().getOperations().isEmpty()) {
74+
for (int j = 0; j < i; j++) {
75+
TelemetryPacket packet2 = telemetryToSend.get(j);
76+
packet2.field().clear();
77+
packet2.fieldOverlay().clear();
78+
}
79+
break;
80+
} else {
81+
packet.field().clear();
82+
}
7583
}
7684

7785
sendAll(new ReceiveTelemetry(telemetryToSend));

0 commit comments

Comments
 (0)