[#1330] [Core] Fix pausing and resuming session

* The paused state of torrents is now correctly stored on shutdown if the session is paused.
 * Resume session refreshes all the torrents' state. This fixes only torrents that changed state being
   updated so queued torrents would be incorrectly displayed as paused.
This commit is contained in:
Calum Lind 2015-09-27 00:31:20 +01:00
parent 8241b2ba3e
commit e1548cc974
3 changed files with 8 additions and 3 deletions

View File

@ -458,6 +458,8 @@ class Core(component.Component):
"""Resume all torrents in the session""" """Resume all torrents in the session"""
if self.session.is_paused(): if self.session.is_paused():
self.session.resume() self.session.resume()
for torrent_id in self.torrentmanager.torrents:
self.torrentmanager[torrent_id].update_state()
component.get("EventManager").emit(SessionResumedEvent()) component.get("EventManager").emit(SessionResumedEvent())
@export @export

View File

@ -582,9 +582,12 @@ class TorrentManager(component.Component):
state = TorrentManagerState() state = TorrentManagerState()
# Create the state for each Torrent and append to the list # Create the state for each Torrent and append to the list
for torrent in self.torrents.values(): for torrent in self.torrents.values():
paused = False if self.session.is_paused():
if torrent.state in ["Paused", "Error"]: paused = torrent.handle.is_paused()
elif torrent.state in ["Paused", "Error"]:
paused = True paused = True
else:
paused = False
torrent_state = TorrentState( torrent_state = TorrentState(
torrent.torrent_id, torrent.torrent_id,

View File

@ -107,7 +107,7 @@ class Core(CorePluginBase):
for setting in CONTROLLED_SETTINGS: for setting in CONTROLLED_SETTINGS:
component.get("PreferencesManager").do_config_set_func(setting, core_config[setting]) component.get("PreferencesManager").do_config_set_func(setting, core_config[setting])
# Resume the session if necessary # Resume the session if necessary
component.get("Core").session.resume() component.get("Core").resume_session()
def do_schedule(self, timer=True): def do_schedule(self, timer=True):
""" """