module JSDOM.Custom.MediaStreamTrack (
module Generated
, getSources
) where
import Control.Monad.IO.Class (MonadIO(..))
import Control.Concurrent.MVar (newEmptyMVar, takeMVar, putMVar)
import JSDOM.Types
(withCallback, Callback(..), SourceInfo(..), MonadDOM, MediaStreamTrackSourcesCallback(..))
import JSDOM.Generated.MediaStreamTrackSourcesCallback
(newMediaStreamTrackSourcesCallback)
import JSDOM.Generated.MediaStreamTrack as Generated hiding (getSources)
import qualified
JSDOM.Generated.MediaStreamTrack
as Generated (getSources)
getSources :: (MonadDOM m, IsMediaStreamTrack self) => self -> m [Maybe SourceInfo]
getSources self = do
result <- liftIO newEmptyMVar
withCallback (newMediaStreamTrackSourcesCallback (liftIO . putMVar result)) $ \callback -> do
Generated.getSources self (Just callback)
liftIO $ takeMVar result