Regularly sync playback position to disk

This commit is contained in:
Thomas Perl 2014-04-30 20:02:03 +02:00
parent 9023235f07
commit c1d65e3572
2 changed files with 24 additions and 0 deletions

View file

@ -82,6 +82,7 @@ MediaPlayer {
sendPositionToCore(lastPosition);
seek(target_position);
playedFrom = target_position;
savePlaybackAfterStopTimer.restart();
}
onPlaybackStateChanged: {
@ -91,9 +92,29 @@ MediaPlayer {
}
} else {
sendPositionToCore(lastPosition);
savePlaybackAfterStopTimer.restart();
}
}
function flushToDisk() {
py.call('main.save_playback_state', []);
}
property var savePlaybackPositionTimer: Timer {
// Save position every minute during playback
interval: 60 * 1000
repeat: true
running: player.isPlaying
onTriggered: player.flushToDisk();
}
property var savePlaybackAfterStopTimer: Timer {
// Save position shortly after every seek and pause event
interval: 5 * 1000
repeat: false
onTriggered: player.flushToDisk();
}
property var seekAfterPlayTimer: Timer {
interval: 100
repeat: true

View file

@ -289,6 +289,8 @@ class gPotherSide:
self.core.save()
def save_playback_state(self):
self.core.save()
@run_in_background_thread
def check_for_episodes(self):
@ -382,3 +384,4 @@ rename_podcast = gpotherside.rename_podcast
change_section = gpotherside.change_section
report_playback_event = gpotherside.report_playback_event
mark_episodes_as_old = gpotherside.mark_episodes_as_old
save_playback_state = gpotherside.save_playback_state