FIRST-Tech-Challenge / FtcRobotController

BSD 3-Clause Clear License
685 stars 3.96k forks source link

Version 9.1 - Bug in VisionPortalImpl.close() #942

Open 25wangj opened 4 months ago

25wangj commented 4 months ago

When VisionPortalImpl tries to remove cameraMonitorViewId from viewsInUse, it uses ArrayList.remove(int) instead of ArrayList.remove(Object). This causes an IndexOutOfBoundsError. Line 663 of VisionPortalImpl should change from:

viewsInUse.remove(cameraMonitorViewId);

to

viewsInUse.remove(Integer.valueOf(cameraMonitorViewId));

If other people think this is correct I will submit a PR.

Windwoes commented 4 months ago

Ooops. Yes, that is correct. Unfortunately, the deploy model of the SDK does not facilitate the acceptance of PRs against this repo.

A workaround for now would be to (a) stop streaming but not actually close the portal if you're doing it to save resources, or (b) simply allow the built-in clean up to run its course.

Windwoes commented 4 months ago

NB: this was missed in testing because the usage of close() in the samples did not trigger a crash display, which in and of itself is a bug. That is, this bug was masked in the samples by the presence of another bug.