From 5e7359619cec9c032c8b78f5ca2a38b87b0c79f3 Mon Sep 17 00:00:00 2001 From: Hannes Schulze Date: Fri, 6 Mar 2026 18:11:12 +0100 Subject: implement event loop --- src/Waylean.lean | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) (limited to 'src/Waylean.lean') 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 -- cgit v1.3.1