module Network.Wai.Handler.Webkit (run) where
import Network.Wai (Application)
import qualified Network.Wai.Handler.Warp as S
import Control.Concurrent (forkOS)
import Control.Concurrent.MVar
import Foreign.C.String (CString, withCString)
import Control.Exception (finally)
run :: String
-> Application -> IO ()
run title app = do
mvar <- newEmptyMVar
_ <- forkOS $ finally (S.run 3000 app) (putMVar mvar ())
_ <- forkOS $ finally (withCString title startBrowser) (putMVar mvar ())
_ <- takeMVar mvar
return ()
foreign import ccall "start_browser"
startBrowser :: CString -> IO ()