summaryrefslogtreecommitdiff
path: root/src/Waylean.lean
diff options
context:
space:
mode:
authorHannes Schulze <haschu0103@outlook.de>2026-03-06 18:11:12 +0100
committerHannes Schulze <haschu0103@outlook.de>2026-03-06 18:11:12 +0100
commit5e7359619cec9c032c8b78f5ca2a38b87b0c79f3 (patch)
treeafc9bbf241b32ea006b1a57dfdd9a803e450cca2 /src/Waylean.lean
parentac696809b0c62f7f062a0dc155a4bf4a995cc9cf (diff)
implement event loop
Diffstat (limited to 'src/Waylean.lean')
-rw-r--r--src/Waylean.lean19
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