on master help sign in
Add nicer way to enableLogging
commitbb3b041481b7e2a4e9d28edf2c4ed9fe8d67e655 authorHamish Mackenzie <Hamish.K.Mackenzie@googlemail.com> dateTue 7 Mar 2017, 10:31 (10 years ago) parent53b6ff9
2 files changed+13−2
jsaddle/src/Language/Javascript/JSaddle/Run.hs+12−1 jsaddle/src/Language/Javascript/JSaddle/Types.hs+1−1
jsaddle/src/Language/Javascript/JSaddle/Run.hs+12−1
@@ -19,6 +19,7 @@ module Language.Javascript.JSaddle.Run (
1919 , syncAfter
2020 , waitForAnimationFrame
2121 , nextAnimationFrame
22+ , enableLogging
2223#ifndef ghcjs_HOST_OS
2324 -- * Functions used to implement JSaddle using JSON messaging
2425 , runJavaScript
@@ -68,6 +69,16 @@ import Control.DeepSeq (deepseq)
6869import GHC.Stats (getGCStatsEnabled, getGCStats, GCStats(..))
6970#endif
7071
72+-- | Enable (or disable) JSaddle logging
73+enableLogging :: Bool -> JSM ()
74+#ifdef ghcjs_HOST_OS
75+enableLogging _ = return ()
76+#else
77+enableLogging v = do
78+ f <- doEnableLogging <$> JSM ask
79+ liftIO $ f v
80+#endif
81+
7182-- | Forces execution of pending asyncronous code
7283syncPoint :: JSM ()
7384#ifdef ghcjs_HOST_OS
@@ -156,7 +167,7 @@ runJavaScript sendBatch entryPoint = do
156167 , addCallback = \(Object (JSVal val)) cb -> atomically $ modifyTVar' callbacks (M.insert val cb)
157168 , freeCallback = \(Object (JSVal val)) -> atomically $ modifyTVar' callbacks (M.delete val)
158169 , nextRef = nextRef'
159− , enableLogging = atomicWriteIORef loggingEnabled
170+ , doEnableLogging = atomicWriteIORef loggingEnabled
160171 }
161172 let processResults = \case
162173 (ProtocolError err) -> error $ "Protocol error : " <> T.unpack err
jsaddle/src/Language/Javascript/JSaddle/Types.hs+1−1
@@ -114,7 +114,7 @@ data JSContextRef = JSContextRef {
114114 , addCallback :: Object -> JSCallAsFunction -> IO ()
115115 , freeCallback :: Object -> IO ()
116116 , nextRef :: TVar JSValueRef
117− , enableLogging :: Bool -> IO ()
117+ , doEnableLogging :: Bool -> IO ()
118118}
119119#endif
120120