diff options
Diffstat (limited to 'src/Xmobar/X11/Loop.hs')
| -rw-r--r-- | src/Xmobar/X11/Loop.hs | 19 | 
1 files changed, 6 insertions, 13 deletions
diff --git a/src/Xmobar/X11/Loop.hs b/src/Xmobar/X11/Loop.hs index c74ae57..e957acd 100644 --- a/src/Xmobar/X11/Loop.hs +++ b/src/Xmobar/X11/Loop.hs @@ -28,7 +28,7 @@ import Control.Arrow ((&&&))  import Control.Monad.Reader  import Control.Concurrent  import Control.Concurrent.STM -import Control.Exception (handle, SomeException(..)) +  import Data.Bits  import Data.Map hiding (foldr, map, filter)  import qualified Data.Map as Map @@ -56,7 +56,7 @@ import Xmobar.X11.Text  import Xmobar.X11.Draw  import Xmobar.X11.Bitmap as Bitmap  import Xmobar.X11.Types -import Xmobar.System.Utils (safeIndex) +import Xmobar.System.Utils (safeIndex, forkThread)  import Xmobar.Run.Loop (loop) @@ -81,23 +81,16 @@ x11Loop conf = do    let ic = Map.empty        to = textOffset conf        ts = textOffsets conf ++ replicate (length fl) (-1) +#ifdef XFT +  xftInitFtLibrary +#endif    (r,w) <- createWin d fs conf    loop conf (startLoop (XConf d r w (fs :| fl) (to :| ts) ic conf))  startLoop :: XConf -> TMVar SignalType -> TVar [String] -> IO ()  startLoop xcfg@(XConf _ _ w _ _ _ _) sig tv = do -#ifdef XFT -    xftInitFtLibrary -#endif -#ifdef THREADED_RUNTIME -    _ <- forkOS (handle (handler "X event handler") (handleXEvent w sig)) -#else -    _ <- forkIO (handle (handler "X event handler") (handleXEvent w sig)) -#endif +    forkThread "X event handler" (handleXEvent w sig)      eventLoop xcfg [] sig tv -  where -    handler thing (SomeException e) = -      void $ putStrLn ("Thread " ++ thing ++ " failed: " ++ show e)  -- | Translates X11 events received by w to signals handled by eventLoop  handleXEvent :: Window -> TMVar SignalType -> IO ()  | 
