Bugfix - use pause flag
[kaka/cakelight.git] / src / kaka / cakelight / mode / VideoMode.java
index 1f43ffb..c7985e3 100644 (file)
@@ -15,6 +15,7 @@ public class VideoMode extends Mode {
     private Thread grabberThread;
     private Consumer<VideoFrame> frameConsumer;
     private VideoDeviceListener deviceListener;
+    private boolean isPaused = false;
 
     public VideoMode() {
         deviceListener = new VideoDeviceListener();
@@ -29,15 +30,12 @@ public class VideoMode extends Mode {
 
     @Override
     public void pause() {
-        try {
-            grabberThread.wait();
-        } catch (InterruptedException e) {
-            e.printStackTrace();
-        }
+        isPaused = true;
     }
 
     @Override
     public void resume() {
+        isPaused = false;
         grabberThread.notify();
     }
 
@@ -54,11 +52,14 @@ public class VideoMode extends Mode {
                 try (FrameGrabber grabber = FrameGrabber.from(videoDevice, config)) {
                     while (!isInterrupted()) {
                         Optional<VideoFrame> frame = grabber.grabFrame();
+                        if (isPaused) {
+                            wait();
+                        }
                         if (frameConsumer != null) frame.ifPresent(frameConsumer);
                         frame.ifPresent(VideoMode.this::onVideoFrame);
 //                        timeIt("frame", grabber::grabFrame);
                     }
-                } catch (IOException e) {
+                } catch (IOException | InterruptedException e) {
                     e.printStackTrace();
                 }
             }