{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-} module GHCJS.DOM.JSFFI.AudioContext ( module Generated , DecodeAudioError(..) , js_decodeAudioData , decodeAudioData ) where import Control.Exception (Exception(..), throwIO) import Control.Monad.IO.Class (MonadIO(..)) import GHCJS.Types (JSVal) import GHCJS.Foreign (jsNull) import GHCJS.Marshal (fromJSVal, fromJSValUnchecked) import GHCJS.Foreign.Callback (releaseCallback) import GHCJS.DOM.Types import GHCJS.DOM.JSFFI.Generated.AudioContext as Generated hiding (js_decodeAudioData, decodeAudioData) data DecodeAudioError = DecodeAudioError deriving (Show, Eq) instance Exception DecodeAudioError foreign import javascript interruptible "$1[\"decodeAudioData\"]($2, $c, function() { $c(null); });" js_decodeAudioData :: AudioContext -> ArrayBuffer -> IO (Nullable AudioBuffer) -- | decodeAudioData :: (MonadIO m, IsAudioContext self, IsArrayBuffer audioData) => self -> audioData -> m AudioBuffer decodeAudioData self audioData = liftIO $ nullableToMaybe <$> js_decodeAudioData (toAudioContext self) (toArrayBuffer audioData) >>= maybe (throwIO DecodeAudioError) return