]> gitweb @ CieloNegro.org - EsounD.git/blobdiff - Sound/EsounD.hs
Sound.EsounD.Internals
[EsounD.git] / Sound / EsounD.hs
index 16e85a5ddd4a61f9fba39eb1a81781ca70ce2197..82bd72afeb3d22cbe7ed2b9155c48fae9b096b54 100644 (file)
@@ -13,20 +13,17 @@ module Sound.EsounD
 
 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
@@ -61,7 +58,7 @@ data Player fr ch (r ∷ * → *)
       }
 
 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.
@@ -99,16 +96,3 @@ openPlayer rate host name
                        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