X-Git-Url: http://dolda2000.com/gitweb/?a=blobdiff_plain;f=src%2Fkaka%2Fcakelight%2Fmode%2FAmbientMode.java;h=98430849212efb2ca0565e969a0f29043bfaab7c;hb=4c688086a9e836fa9c93e66eebf439db5406f3aa;hp=77f1bc37ab1a9d336b20df65b962a4527f87fdfe;hpb=d0afa6fb625ce2fe77d1ed6f0df8ed34391ddc35;p=kaka%2Fcakelight.git diff --git a/src/kaka/cakelight/mode/AmbientMode.java b/src/kaka/cakelight/mode/AmbientMode.java index 77f1bc3..9843084 100644 --- a/src/kaka/cakelight/mode/AmbientMode.java +++ b/src/kaka/cakelight/mode/AmbientMode.java @@ -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,16 +27,15 @@ 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() { - thread.notify(); + isPaused = false; + synchronized (thread) { + thread.notify(); + } } @Override @@ -43,13 +43,18 @@ 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) { + synchronized (thread) { + wait(); + } + } LedFrame frame = LedFrame.from(config); updateFrame(frame, System.currentTimeMillis() - start, index); updateWithFrame(frame); @@ -57,13 +62,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(); }