import System import Data.IORef import Prelude hiding (init) import Network.XMMS.Playback import Network.XMMS.Client import Network.XMMS.Client.Glib import Network.XMMS.Playlist as Playlist import System.Glib.MainLoop main = do connection <- init "tutorial4" xmmsPath <- catch (getEnv "XMMS_PATH") (\e -> return "") connectRes <- connect connection xmmsPath if connectRes == 0 then do errorMsg <- getLastError connection putStrLn $ "Connection failed: " ++ errorMsg else do loop <- mainLoopNew Nothing False result <- broadcastCurrentID connection count <- newIORef 0 resultNotifierSet result (\(XMMSInt pos) -> do putStrLn $ "playing ID: " ++ (show pos) modifyIORef count (+1) countV <- readIORef count if countV<5 then do return True else do putStrLn $ "Playback has been called " ++ (show countV) ++ " times. Exiting..." mainLoopQuit loop return False) mainLoopGmainInit connection mainLoopRun loop