!7 module OccasionalWebCam > DynSCP { transient ImageSurface imageSurface; transient Webcam cam; JComponent visualize2() { ret jcenteredbutton("Start", rThread startIt); } void startIt { selectWebCam_withPreferred(vf selectCam); } void selectCam(Webcam _cam) enter { cleanMeUp(); cam = _cam; print("Cam opened: " + cam.open()); // blocking mode (no background thread) setComponent(jscroll_center(imageSurface = doubleBufferedImageSurface_noAlpha())); awtCalcEvery(imageSurface, 0.0, 1.0, r { time "Get image from webcam" { BufferedImage img = cam.getImage(); } imageSurface.setImage(img); }); } void cleanMeUp { if (cam != null) cam.close(); cam = null; } }