diff options
Diffstat (limited to 'lib/Wayland/Display.lean')
| -rw-r--r-- | lib/Wayland/Display.lean | 5 |
1 files changed, 3 insertions, 2 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 |
