X-Git-Url: http://dolda2000.com/gitweb/?a=blobdiff_plain;f=src%2Fkaka%2Fcakelight%2Fmode%2FVideoMode.java;h=a8397dc7bce53d40dc29fd511e1a5280f4ee1785;hb=7434e71cc01dde2cc9bde4856f7ec396aa67d535;hp=c7985e3615c4af9425df81d2f9891cfaed7fc8e5;hpb=fa9808cd57e32f096495ad06689f7d23878f5217;p=kaka%2Fcakelight.git diff --git a/src/kaka/cakelight/mode/VideoMode.java b/src/kaka/cakelight/mode/VideoMode.java index c7985e3..a8397dc 100644 --- a/src/kaka/cakelight/mode/VideoMode.java +++ b/src/kaka/cakelight/mode/VideoMode.java @@ -25,7 +25,12 @@ public class VideoMode extends Mode { @Override public void enter(Configuration config) { this.config = config; - deviceListener.startListening(); + if (config.video.deviceIsAutomatic) { + deviceListener.startListening(); + } else { + File videoDevice = new File(config.video.device); + startGrabberThread(videoDevice); + } } @Override @@ -36,13 +41,17 @@ public class VideoMode extends Mode { @Override public void resume() { isPaused = false; - grabberThread.notify(); + synchronized (grabberThread) { + grabberThread.notify(); + } } @Override public void exit() { grabberThread.interrupt(); - deviceListener.stopListening(); + if (config.video.deviceIsAutomatic) { + deviceListener.stopListening(); + } } private void startGrabberThread(File videoDevice) { @@ -53,7 +62,9 @@ public class VideoMode extends Mode { while (!isInterrupted()) { Optional frame = grabber.grabFrame(); if (isPaused) { - wait(); + synchronized (grabberThread) { + wait(); + } } if (frameConsumer != null) frame.ifPresent(frameConsumer); frame.ifPresent(VideoMode.this::onVideoFrame);