X-Git-Url: http://dolda2000.com/gitweb/?a=blobdiff_plain;f=src%2Fkaka%2Fcakelight%2FCakeLight.java;h=cd59362c9c66044ca280d152b7fabd0dbacbb4bc;hb=fa9808cd57e32f096495ad06689f7d23878f5217;hp=0c1aa1ac5be2caa68d15c8a598c51389f0f955f1;hpb=fc040bcb6270ff0a4bfaab6cfeaad60edef2a11c;p=kaka%2Fcakelight.git diff --git a/src/kaka/cakelight/CakeLight.java b/src/kaka/cakelight/CakeLight.java index 0c1aa1a..cd59362 100644 --- a/src/kaka/cakelight/CakeLight.java +++ b/src/kaka/cakelight/CakeLight.java @@ -28,29 +28,29 @@ public class CakeLight { } public void cleanup() { - while (popMode()); + while (popMode() != null); } public void pushMode(Mode mode) { Objects.requireNonNull(mode); if (!modes.isEmpty()) { - stopMode(modes.peek()); + pauseMode(modes.peek()); } modes.push(mode); startMode(mode); // TODO: create a composite fading mode of top of stack and new mode } - public boolean popMode() { + public Mode popMode() { if (!modes.isEmpty()) { Mode mode = modes.pop(); stopMode(mode); if (!modes.isEmpty()) { - startMode(modes.peek()); + resumeMode(modes.peek()); } - return true; + return mode; } - return false; + return null; // TODO: create a composite fading mode of popped mode and top of stack, unless doing cleanup } @@ -59,6 +59,14 @@ public class CakeLight { mode.enter(config); } + private void pauseMode(Mode mode) { + mode.pause(); + } + + private void resumeMode(Mode mode) { + mode.resume(); + } + private void stopMode(Mode mode) { mode.setFrameListener(ledFrame -> {}); // To avoid any frame being sent to the controller while the thread is exiting mode.exit();