Bugfix - use pause flag
[kaka/cakelight.git] / src / kaka / cakelight / mode / AmbientMode.java
index 77f1bc3..ba816d5 100644 (file)
@@ -9,6 +9,7 @@ public class AmbientMode extends Mode { // TODO split into DynamicAmbient and St
     private Thread thread; // TODO move to a dynamic sub class
     protected Configuration config;
     private int type = 0;
+    private boolean isPaused = false;
 
     AmbientMode() {}
 
@@ -26,15 +27,12 @@ public class AmbientMode extends Mode { // TODO split into DynamicAmbient and St
 
     @Override
     public void pause() {
-        try {
-            thread.wait();
-        } catch (InterruptedException e) {
-            e.printStackTrace();
-        }
+        isPaused = true;
     }
 
     @Override
     public void resume() {
+        isPaused = false;
         thread.notify();
     }
 
@@ -43,13 +41,16 @@ public class AmbientMode extends Mode { // TODO split into DynamicAmbient and St
         stopThread();
     }
 
-    public void startThread() {
+    private void startThread() {
         thread = new Thread() {
             public void run() {
                 try {
                     long start = System.currentTimeMillis();
                     int index = 0;
                     while (!isInterrupted()) {
+                        if (isPaused) {
+                            wait();
+                        }
                         LedFrame frame = LedFrame.from(config);
                         updateFrame(frame, System.currentTimeMillis() - start, index);
                         updateWithFrame(frame);
@@ -57,13 +58,14 @@ public class AmbientMode extends Mode { // TODO split into DynamicAmbient and St
                         Thread.sleep(20);
                     }
                 } catch (InterruptedException e) {
+                    e.printStackTrace();
                 }
             }
         };
         thread.start();
     }
 
-    public void stopThread() {
+    private void stopThread() {
         thread.interrupt();
     }