X-Git-Url: http://git.cielonegro.org/gitweb.cgi?p=EsounD.git;a=blobdiff_plain;f=Sound%2FEsounD%2FPlayer.hs;h=b48dfee9a849f15245ecfb3f702ebdd8ca32e5ec;hp=7f7eb223a88ddb2c593c7dfd695b58a2076c7f9d;hb=9be39a0e8dc40b5fbd3280a5d06f7a85626e0b33;hpb=9aeab0af3051d079e774e6ce55928738db8ba8ac diff --git a/Sound/EsounD/Player.hs b/Sound/EsounD/Player.hs index 7f7eb22..b48dfee 100644 --- a/Sound/EsounD/Player.hs +++ b/Sound/EsounD/Player.hs @@ -13,7 +13,9 @@ module Sound.EsounD.Player ) where import Bindings.EsounD +import Control.Exception.Peel import Control.Monad.IO.Class +import Control.Monad.IO.Peel import Control.Monad.Trans.Region import Control.Monad.Trans.Region.OnExit import Control.Monad.Unicode @@ -54,7 +56,7 @@ instance Frame fr ⇒ Writable (Player fr Stereo) (L.Vector fr, L.Vector fr) whe openPlayer ∷ ∀fr ch s pr. ( Frame fr , Channels ch - , MonadIO pr + , MonadPeelIO pr ) ⇒ Int -- ^ sample rate for the stream. → Maybe HostName -- ^ host to connect to. @@ -62,7 +64,8 @@ openPlayer ∷ ∀fr ch s pr. -- ESD (if any). → RegionT s pr (Player fr ch (RegionT s pr)) openPlayer rate host name - = do h ← liftIO openSocket + = block $ + do h ← liftIO openSocket ch ← onExit $ sanitizeIOError $ closeSocket h return Player { plRate = rate