diff options
| author | Hannes Schulze <haschu0103@outlook.de> | 2026-03-06 18:11:12 +0100 |
|---|---|---|
| committer | Hannes Schulze <haschu0103@outlook.de> | 2026-03-06 18:11:12 +0100 |
| commit | 5e7359619cec9c032c8b78f5ca2a38b87b0c79f3 (patch) | |
| tree | afc9bbf241b32ea006b1a57dfdd9a803e450cca2 /src | |
| parent | ac696809b0c62f7f062a0dc155a4bf4a995cc9cf (diff) | |
implement event loop
Diffstat (limited to 'src')
| -rw-r--r-- | src/Waylean.lean | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/src/Waylean.lean b/src/Waylean.lean index d05df11..28c5f58 100644 --- a/src/Waylean.lean +++ b/src/Waylean.lean @@ -1,5 +1,20 @@ import Wayland -def main : IO Unit := do +partial def mainLoop (loop : EventLoop) : IO Unit := do + match (← loop.poll) with + | .none => return + | .some msg => msg; mainLoop loop + +partial def main : IO Unit := do let disp ← Display.new .none - IO.println s!"Hello, world! Version: {← disp.getVersion}" + let loop ← EventLoop.new + _ ← loop.addDisplay disp + _ ← loop.addSignal 2 (do + IO.println "Received SIGINT" + loop.quit) + let rec setUpTimer := loop.addTimer 500 (do + IO.println "Timer tick" + _ ← setUpTimer) + _ ← setUpTimer + disp.roundtrip + mainLoop loop |
