diff options
author | 2012-08-29 14:14:57 -0400 | |
---|---|---|
committer | 2012-08-29 14:14:57 -0400 | |
commit | 93037580b61a17df5e6f849e206cbae0f0116e1b (patch) | |
tree | 6d1e320e0479aec7ac629ce2a04f0ab552c29d47 /Assistant/DaemonStatus.hs | |
parent | c59ba80b5b49fb79f71dddde97e2f92959161f9b (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.hs | 13 |
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 = |