From c1d65e35725ca3e0e03d2ca4a143522d9ab4cd01 Mon Sep 17 00:00:00 2001 From: Thomas Perl Date: Wed, 30 Apr 2014 20:02:03 +0200 Subject: [PATCH] Regularly sync playback position to disk --- common/GPodderPlayback.qml | 21 +++++++++++++++++++++ main.py | 3 +++ 2 files changed, 24 insertions(+) diff --git a/common/GPodderPlayback.qml b/common/GPodderPlayback.qml index 982a896..0a43a1d 100644 --- a/common/GPodderPlayback.qml +++ b/common/GPodderPlayback.qml @@ -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 diff --git a/main.py b/main.py index 9039b40..02cb217 100644 --- a/main.py +++ b/main.py @@ -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