on master help sign in
Set title, exit when server dies
bf06575Michael Snoyman
Network/Wai/Handler/Webkit.hs+13−6
@@ -3,12 +3,19 @@ module Network.Wai.Handler.Webkit (run) where
3
3
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)
7
10
11+run :: String -- ^ Title to show in titlebar
8−run :: Application -> IO ()
12+ -> Application -> IO ()
9−run app = do
13+run title app = do
14+ mvar <- newEmptyMVar
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 ())
17+ _ <- takeMVar mvar
18+ return ()
12
19
13foreign import ccall "start_browser"
20foreign import ccall "start_browser"
14− startBrowser :: IO ()
21+ startBrowser :: CString -> IO ()
webkit.cpp+1−2
@@ -3,9 +3,8 @@
3#include <QtWebKit>
3#include <QtWebKit>
4
4
5extern "C" {
5extern "C" {
6− int start_browser()
6+ int start_browser(char *title)
7 {
7 {
8− char title[80] = "My Application";
9 char *argv[1];
8 char *argv[1];
10 argv[0] = title;
9 argv[0] = title;
11 int argc = 1;
10 int argc = 1;