module Xmobar.X11.Events(nextEvent') where
import Control.Concurrent
import System.Posix.Types (Fd(..))
import Graphics.X11.Xlib (
Display(..), XEventPtr, nextEvent, pending, connectionNumber)
nextEvent' :: Display -> XEventPtr -> IO ()
nextEvent' :: Display -> XEventPtr -> IO ()
nextEvent' Display
d XEventPtr
p = do
CInt
pend <- Display -> IO CInt
pending Display
d
if CInt
pend CInt -> CInt -> Bool
forall a. Eq a => a -> a -> Bool
/= CInt
0
then Display -> XEventPtr -> IO ()
nextEvent Display
d XEventPtr
p
else do
Fd -> IO ()
threadWaitRead (CInt -> Fd
Fd CInt
fd)
Display -> XEventPtr -> IO ()
nextEvent' Display
d XEventPtr
p
where
fd :: CInt
fd = Display -> CInt
connectionNumber Display
d