diff options
Diffstat (limited to 'src/Xmobar/App/Main.hs')
| -rw-r--r-- | src/Xmobar/App/Main.hs | 21 | 
1 files changed, 12 insertions, 9 deletions
| diff --git a/src/Xmobar/App/Main.hs b/src/Xmobar/App/Main.hs index 29504f4..e0b0329 100644 --- a/src/Xmobar/App/Main.hs +++ b/src/Xmobar/App/Main.hs @@ -40,9 +40,10 @@ import Xmobar.X11.Types  import Xmobar.X11.Text  import Xmobar.X11.Window  import Xmobar.App.Opts (recompileFlag, verboseFlag, getOpts, doOpts) -import Xmobar.App.EventLoop (startLoop, startCommand) +import Xmobar.App.EventLoop (startLoop, startCommand, newRefreshLock, refreshLock)  import Xmobar.App.Compile (recompile, trace)  import Xmobar.App.Config +import Xmobar.App.Timer (withTimer)  xmobar :: Config -> IO ()  xmobar conf = withDeferSignals $ do @@ -53,14 +54,16 @@ xmobar conf = withDeferSignals $ do    cls   <- mapM (parseTemplate (commands conf) (sepChar conf))                  (splitTemplate (alignSep conf) (template conf))    sig   <- setupSignalHandler -  bracket (mapM (mapM $ startCommand sig) cls) -          cleanupThreads -          $ \vars -> do -    (r,w) <- createWin d fs conf -    let ic = Map.empty -        to = textOffset conf -        ts = textOffsets conf ++ replicate (length fl) (-1) -    startLoop (XConf d r w (fs:fl) (to:ts) ic conf) sig vars +  refLock <- newRefreshLock +  withTimer (refreshLock refLock) $ +    bracket (mapM (mapM $ startCommand sig) cls) +            cleanupThreads +            $ \vars -> do +      (r,w) <- createWin d fs conf +      let ic = Map.empty +          to = textOffset conf +          ts = textOffsets conf ++ replicate (length fl) (-1) +      startLoop (XConf d r w (fs:fl) (to:ts) ic conf) sig refLock vars  configFromArgs :: Config -> IO Config  configFromArgs cfg = getArgs >>= getOpts >>= doOpts cfg . fst | 
