summaryrefslogtreecommitdiff
path: root/Assistant/DaemonStatus.hs
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2012-08-29 14:14:57 -0400
committerGravatar Joey Hess <joey@kitenet.net>2012-08-29 14:14:57 -0400
commit93037580b61a17df5e6f849e206cbae0f0116e1b (patch)
tree6d1e320e0479aec7ac629ce2a04f0ab552c29d47 /Assistant/DaemonStatus.hs
parentc59ba80b5b49fb79f71dddde97e2f92959161f9b (diff)
fix resume button
Change alterTransferInfo to not merge in old values, including transferPaused.
Diffstat (limited to 'Assistant/DaemonStatus.hs')
-rw-r--r--Assistant/DaemonStatus.hs13
1 files changed, 10 insertions, 3 deletions
diff --git a/Assistant/DaemonStatus.hs b/Assistant/DaemonStatus.hs
index a07d19124..18dc7342a 100644
--- a/Assistant/DaemonStatus.hs
+++ b/Assistant/DaemonStatus.hs
@@ -194,12 +194,19 @@ adjustTransfersSTM dstatus a = do
{- Alters a transfer's info, if the transfer is in the map. -}
alterTransferInfo :: DaemonStatusHandle -> Transfer -> TransferInfo -> IO ()
alterTransferInfo dstatus t info = updateTransferInfo' dstatus $
- M.adjust (mergeTransferInfo info) t
+ M.adjust (const info) t
-{- Updates a transfer's info. Adds the transfer to the map if necessary. -}
+{- Updates a transfer's info. Adds the transfer to the map if necessary,
+ - or if already present, updates it while preserving the old transferTid
+ - and transferPaused values, which are not written to disk. -}
updateTransferInfo :: DaemonStatusHandle -> Transfer -> TransferInfo -> IO ()
updateTransferInfo dstatus t info = updateTransferInfo' dstatus $
- M.insertWith' mergeTransferInfo t info
+ M.insertWith' merge t info
+ where
+ merge new old = new
+ { transferTid = maybe (transferTid new) Just (transferTid old)
+ , transferPaused = transferPaused new || transferPaused old
+ }
updateTransferInfo' :: DaemonStatusHandle -> (TransferMap -> TransferMap) -> IO ()
updateTransferInfo' dstatus a =