]> git.seodisparate.com - jumpartifact.com_demo_0/commitdiff
Minor refactoring
authorStephen Seo <seo.disparate@gmail.com>
Thu, 17 Aug 2023 07:07:09 +0000 (16:07 +0900)
committerStephen Seo <seo.disparate@gmail.com>
Thu, 17 Aug 2023 07:07:09 +0000 (16:07 +0900)
Prevent creating a screen-less PendingAction with invalid type.

src/screen.cc

index c37ff9d868ff11587c1a0438390a7a9939846842..df17293a27e2b22e019b5847fc18db47020456d5 100644 (file)
@@ -14,7 +14,21 @@ Screen::Screen(std::weak_ptr<ScreenStack> stack) : stack(stack) {}
 ScreenStack::PendingAction::PendingAction() : screen(), action(Action::NOP) {}
 
 ScreenStack::PendingAction::PendingAction(Action action)
-    : screen(), action(action) {}
+    : screen(), action(action) {
+  switch (action) {
+    case Action::PUSH_SCREEN:
+    case Action::CONSTRUCT_SCREEN:
+      // Cannot push non-existant screen.
+      this->action = Action::NOP;
+#ifndef NDEBUG
+      std::clog << "WARNING: Cannot create PendingAction with PUSH_SCREEN or "
+                   "CONSTRUCT_SCREEN!\n";
+#endif
+      break;
+    default:
+      break;
+  }
+}
 
 ScreenStack::PendingAction::PendingAction(Screen::Ptr &&screen)
     : screen(std::forward<Screen::Ptr>(screen)), action(Action::PUSH_SCREEN) {}