hsqml-0.2.0.0: src/Graphics/QML/Internal/JobQueue.hs
module Graphics.QML.Internal.JobQueue (
postJob,
processJobs
) where
import Graphics.QML.Internal.BindCore
import Control.Concurrent.MVar
import System.IO.Unsafe
{-# NOINLINE jobQueue #-}
jobQueue :: MVar [IO ()]
jobQueue = unsafePerformIO $ newMVar []
postJob :: IO () -> IO ()
postJob j = do
notify <- modifyMVar jobQueue $ \js -> return (j:js,null js)
if notify
then hsqmlEvloopNotifyJobs
else return ()
processJobs :: IO ()
processJobs = do
js <- modifyMVar jobQueue $ \js -> return ([],js)
sequence_ $ reverse js