@@ -3,12 +3,19 @@ module Network.Wai.Handler.Webkit (run) where
4import Network.Wai (Application)
4import Network.Wai (Application)
5import qualified Network.Wai.Handler.SimpleServer as S
5import qualified Network.Wai.Handler.SimpleServer as S
6−import Control.Concurrent (forkIO)
6+import Control.Concurrent (forkOS, myThreadId, killThread)
7+import Control.Concurrent.MVar
8+import Foreign.C.String (CString, withCString)
9+import Control.Exception (finally)
11+run :: String -- ^ Title to show in titlebar
8−run :: Application -> IO ()
12+ -> Application -> IO ()
9−run app = do
13+run title app = do
10− forkIO $ S.run 3000 app
15+ _ <- forkOS $ finally (S.run 3000 app) (putMVar mvar ())
11− startBrowser
16+ _ <- forkOS $ finally (withCString title startBrowser) (putMVar mvar ())
13foreign import ccall "start_browser"
20foreign import ccall "start_browser"
14− startBrowser :: IO ()
21+ startBrowser :: CString -> IO ()