import Bindings.EsounD
import Control.Monad.IO.Class
-import Control.Monad.Trans.Region as R
+import Control.Monad.Trans.Region
import Control.Monad.Trans.Region.OnExit
import Control.Monad.Unicode
import Data.Bits
import Data.Int
import Foreign.C.String
-import Foreign.C.Types
-import Foreign.Ptr
import Network
import Prelude.Unicode
+import Sound.EsounD.Internals
import System.IO
import System.IO.SaferFileHandles.Unsafe
-import System.Posix.IO
-import System.Posix.Types
class Frame fr where
frameFmt ∷ fr → C'esd_format_t
}
instance Dup (Player fr ch) where
- dup pl = do ch' ← R.dup (plCloseH pl)
+ dup pl = do ch' ← dup (plCloseH pl)
return pl { plCloseH = ch' }
-- | Open an ESD handle for playing a stream.
hostPtr
namePtr
≫= wrapSocket "esd_play_stream() returned an error"
-
-wrapSocket :: String -> CInt → IO Handle
-wrapSocket e (-1) = fail e
-wrapSocket _ fd = fdToHandle (Fd fd)
-
-closeSocket :: Handle → IO ()
-closeSocket h = do (Fd fd) ← handleToFd h
- _ ← c'esd_close (fromIntegral fd)
- return ()
-
-withCStrOrNull :: Maybe String → (CString → IO a) → IO a
-withCStrOrNull Nothing f = f nullPtr
-withCStrOrNull (Just s) f = withCString s f
--- /dev/null
+module Sound.EsounD.Internals
+ ( wrapSocket
+ , closeSocket
+ , withCStrOrNull
+ )
+ where
+
+import Bindings.EsounD
+import Foreign.C.String
+import Foreign.C.Types
+import Foreign.Ptr
+import System.IO
+import System.Posix.IO
+import System.Posix.Types
+
+wrapSocket :: String -> CInt → IO Handle
+wrapSocket e (-1) = fail e
+wrapSocket _ fd = fdToHandle (Fd fd)
+
+closeSocket :: Handle → IO ()
+closeSocket h = do (Fd fd) ← handleToFd h
+ _ ← c'esd_close (fromIntegral fd)
+ return ()
+
+withCStrOrNull :: Maybe String → (CString → IO a) → IO a
+withCStrOrNull Nothing f = f nullPtr
+withCStrOrNull (Just s) f = withCString s f