Only generate passthrough URLs for RoboRIO (#1624)

Otherwise accidentally, a race could occur between coprocessors and rio.

Java was done in both old and new locations as it's a race.
This commit is contained in:
Thad House
2019-04-27 20:35:23 -07:00
committed by Peter Johnson
parent d3affb16bc
commit bdc822fad8
5 changed files with 47 additions and 22 deletions

View File

@@ -146,17 +146,21 @@ public final class CameraServer {
values[j] = "mjpg:" + values[j];
}
// Look to see if we have a passthrough server for this source
for (VideoSink i : m_sinks.values()) {
int sink = i.getHandle();
int sinkSource = CameraServerJNI.getSinkSource(sink);
if (source == sinkSource
&& VideoSink.getKindFromInt(CameraServerJNI.getSinkKind(sink)) == VideoSink.Kind.kMjpeg) {
// Add USB-only passthrough
String[] finalValues = Arrays.copyOf(values, values.length + 1);
int port = CameraServerJNI.getMjpegServerPort(sink);
finalValues[values.length] = makeStreamValue("172.22.11.2", port);
return finalValues;
if (CameraServerSharedStore.getCameraServerShared().isRoboRIO()) {
// Look to see if we have a passthrough server for this source
// Only do this on the roboRIO
for (VideoSink i : m_sinks.values()) {
int sink = i.getHandle();
int sinkSource = CameraServerJNI.getSinkSource(sink);
if (source == sinkSource
&& VideoSink.getKindFromInt(CameraServerJNI.getSinkKind(sink))
== VideoSink.Kind.kMjpeg) {
// Add USB-only passthrough
String[] finalValues = Arrays.copyOf(values, values.length + 1);
int port = CameraServerJNI.getMjpegServerPort(sink);
finalValues[values.length] = makeStreamValue("172.22.11.2", port);
return finalValues;
}
}
}

View File

@@ -67,6 +67,11 @@ public abstract class RobotBase implements AutoCloseable {
public Long getRobotMainThreadId() {
return MAIN_THREAD_ID;
}
@Override
public boolean isRoboRIO() {
return RobotBase.isReal();
}
};
CameraServerSharedStore.setCameraServerShared(shared);