summaryrefslogtreecommitdiff
path: root/src/user/raleigh/runtime.cpp
blob: 1152575d5ec372ecf9b490c8c661f92d7bbde0ef (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <raleigh/runtime.h>
#include <raleigh/window.h>
#include <pland/pcrt.h>

namespace raleigh {
  dllist<window &> open_windows;

  __attribute__ ((noreturn))
  void start_runtime() {
    while (1) {
      if (!open_windows.first)
        __pcrt_quit();
      for (dllist<window &>::node *w = open_windows.first; w; w = w->next)
        if (w->d.try_actions() == window::DELETE)
          if (!(w = open_windows.remove_in_place(w)))
            break;
      _wait_for_action();
      _yield_task();
    }
  }
}