module Sound.ALSA.Sequencer.Queue.Timer
( T
, get
, set
, copy
, clone
, getQueue
, getType
, getResolution
, setType
, setResolution
, QueueTimer.Type(..)
) where
import qualified Sound.ALSA.Sequencer.Marshal.Queue as Queue
import qualified Sound.ALSA.Sequencer.Marshal.QueueTimer as QueueTimer
import qualified Sound.ALSA.Sequencer.Marshal.Sequencer as Seq
import qualified Sound.ALSA.Sequencer.Area as Area
import qualified Sound.ALSA.Exception as Exc
import Foreign.Ptr (Ptr, )
import Foreign.C.Types (CInt, )
import Data.Word (Word, )
type T = Area.QueueTimer
type T_ = Area.QueueTimer_
get :: Seq.T mode -> Queue.T -> IO T
get (Seq.Cons h) q =
do timer <- Area.queue_timer_malloc
Exc.checkResult_ "get_queue_timer" =<< Area.with_queue_timer timer
(snd_seq_get_queue_timer h (Queue.exp q))
return timer
foreign import ccall unsafe "alsa/asoundlib.h snd_seq_get_queue_timer"
snd_seq_get_queue_timer :: Ptr Seq.Core -> CInt -> Ptr T_ -> IO CInt
set :: Seq.T mode -> Queue.T -> T -> IO ()
set (Seq.Cons h) p timer =
Exc.checkResult_ "set_queue_timer" =<< Area.with_queue_timer timer (snd_seq_set_queue_timer h (Queue.exp p))
foreign import ccall unsafe "alsa/asoundlib.h snd_seq_set_queue_timer"
snd_seq_set_queue_timer :: Ptr Seq.Core -> CInt -> Ptr T_ -> IO CInt
copy :: T -> T -> IO ()
clone :: T -> IO T
getQueue :: T -> IO Queue.T
getType :: T -> IO QueueTimer.Type
getResolution :: T -> IO Word
setType :: T -> QueueTimer.Type -> IO ()
setResolution :: T -> Word -> IO ()
copy = Area.queue_timer_copy
clone = Area.queue_timer_clone
getQueue = Area.queue_timer_get_queue
getType = Area.queue_timer_get_type
getResolution = Area.queue_timer_get_resolution
setType = Area.queue_timer_set_type
setResolution = Area.queue_timer_set_resolution