summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Assistant/DaemonStatus.hs11
-rw-r--r--Assistant/Threads/Watcher.hs11
2 files changed, 15 insertions, 7 deletions
diff --git a/Assistant/DaemonStatus.hs b/Assistant/DaemonStatus.hs
index 3c0bfba42..13828d3ee 100644
--- a/Assistant/DaemonStatus.hs
+++ b/Assistant/DaemonStatus.hs
@@ -236,9 +236,14 @@ updateAlertMap dstatus a = notifyAlert dstatus `after` modifyDaemonStatus_ dstat
- The alert is left visible afterwards, as filler.
- Old filler is pruned, to prevent the map growing too large. -}
alertWhile :: DaemonStatusHandle -> Alert -> IO Bool -> IO Bool
-alertWhile dstatus alert a = do
+alertWhile dstatus alert a = alertWhile' dstatus alert $ do
+ r <- a
+ return $ (r, r)
+
+alertWhile' :: DaemonStatusHandle -> Alert -> IO (Bool, a) -> IO a
+alertWhile' dstatus alert a = do
let alert' = alert { alertClass = Activity }
i <- addAlert dstatus alert'
- r <- bracket_ noop noop a
- updateAlertMap dstatus $ convertToFiller i r
+ (ok, r) <- bracket_ noop noop a
+ updateAlertMap dstatus $ convertToFiller i ok
return r
diff --git a/Assistant/Threads/Watcher.hs b/Assistant/Threads/Watcher.hs
index bfeec7630..51dc57263 100644
--- a/Assistant/Threads/Watcher.hs
+++ b/Assistant/Threads/Watcher.hs
@@ -72,11 +72,11 @@ watchThread st dstatus transferqueue changechan = do
}
{- Initial scartup scan. The action should return once the scan is complete. -}
-startupScan :: ThreadState -> DaemonStatusHandle -> IO a -> IO ()
+startupScan :: ThreadState -> DaemonStatusHandle -> IO a -> IO a
startupScan st dstatus scanner = do
runThreadState st $ showAction "scanning"
- void $ alertWhile dstatus startupScanAlert $ do
- void $ scanner
+ r <- alertWhile' dstatus startupScanAlert $ do
+ r <- scanner
-- Notice any files that were deleted before
-- watching was started.
@@ -85,10 +85,13 @@ startupScan st dstatus scanner = do
showAction "started"
modifyDaemonStatus_ dstatus $ \s -> s { scanComplete = True }
- return True
+
+ return (True, r)
void $ addAlert dstatus runningAlert
+ return r
+
ignored :: FilePath -> Bool
ignored = ig . takeFileName
where