git.fiddlerwoaroof.com
Raw Blame History
module Test where
import Xlib

xGetEventMul :: XMArray XDisplay -> IO (Int, XEvent)
xGetEventMul displays =
  let n_displays = xMArrayLength displays
      loop :: Int -> IO (Int, XEvent)
      loop i = if i == n_displays then loop 0
               else xMArrayLookup displays i `thenIO` \ display ->
                    xDisplayForceOutput display `thenIO` \ _ ->
                    xEventListen display `thenIO` \ n_events ->
                    if n_events == 0 then loop (i + 1)
                    else xGetEvent display `thenIO` \ event ->
                         returnIO (i, event)
  in loop 0