module Eventloop.System.DisplayExceptionThread ( startDisplayingExceptions ) where import qualified Control.Exception as E import Control.Concurrent.ExceptionCollection import Control.Concurrent.SafePrint import Eventloop.Types.Exception import Eventloop.Types.System startDisplayingExceptions :: EventloopSystemConfiguration progstateT -> IO () startDisplayingExceptions systemConfig = do exceptions_ <- collectExceptions (exceptions systemConfig) mapM_ (displayException safePrintToken_) exceptions_ where safePrintToken_ = safePrintToken (sharedIOConstants systemConfig) displayException :: SafePrintToken -> E.SomeException -> IO () displayException safePrintToken exception = safePrintLn safePrintToken (show exception)