{-# LANGUAGE ForeignFunctionInterface #-} 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 -- ^ Title to show in titlebar -> 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 ()