summaryrefslogtreecommitdiff
path: root/lib/Wayland
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Wayland')
-rw-r--r--lib/Wayland/Display.lean5
-rw-r--r--lib/Wayland/Native.lean6
2 files changed, 6 insertions, 5 deletions
diff --git a/lib/Wayland/Display.lean b/lib/Wayland/Display.lean
index 0a049b3..7bf55c5 100644
--- a/lib/Wayland/Display.lean
+++ b/lib/Wayland/Display.lean
@@ -281,13 +281,14 @@ private def MessageDesc.toNative (msg : MessageDesc) : Native.Message :=
/-- Ensure the given interface (and all of its dependencies) are registered in the display's `TypeMap`. -/
private def DisplayM.ensureInterface (ι : InterfaceName) [iface : ResolvedInterface ι] : DisplayM σ Unit := do
let typeMap := (← read).typeMap
- for ⟨ι', iface'⟩ in iface.referencedInterfaces do
- if !(← typeMap.contains ι') then
+ if not (← typeMap.isComplete ι) then
+ for ⟨ι', iface'⟩ in iface.referencedInterfaces do
typeMap.register
{ name := ι'
version := iface'.version
requests := iface'.requests.map MessageDesc.toNative
events := iface'.events.map MessageDesc.toNative }
+ (setComplete := if ι' == ι then 1 else 0)
/-- Get the `wl_display` instance within the display monad. -/
def DisplayM.getDisplay : DisplayM σ (Object "wl_display") := do
diff --git a/lib/Wayland/Native.lean b/lib/Wayland/Native.lean
index f8d4c53..430472b 100644
--- a/lib/Wayland/Native.lean
+++ b/lib/Wayland/Native.lean
@@ -73,11 +73,11 @@ opaque EventLoop.poll : (eventLoop : @& (EventLoop M)) → IO (Option M)
@[extern "waylean_type_map_new"]
opaque TypeMap.new : IO TypeMap
-@[extern "waylean_type_map_contains"]
-opaque TypeMap.contains : (typeMap : @& TypeMap) → (ifaceName : @& String) → IO Bool
+@[extern "waylean_type_map_is_complete"]
+opaque TypeMap.isComplete : (typeMap : @& TypeMap) → (ifaceName : @& String) → IO Bool
@[extern "waylean_type_map_register"]
-opaque TypeMap.register : (typeMap : @& TypeMap) → (ifaceDesc : @& Interface) → IO Unit
+opaque TypeMap.register : (typeMap : @& TypeMap) → (ifaceDesc : @& Interface) → (setComplete : UInt32) → IO Unit
@[extern "waylean_argument_buffer_new"]
opaque ArgumentBuffer.new : IO ArgumentBuffer