]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
timeshift: fix the time offset when speed changes
authorJaroslav Kysela <perex@perex.cz>
Mon, 4 Jan 2016 20:52:09 +0000 (21:52 +0100)
committerJaroslav Kysela <perex@perex.cz>
Mon, 4 Jan 2016 20:52:09 +0000 (21:52 +0100)
src/timeshift/timeshift_reader.c

index 940095133a3bbc077442ccc3dd96013250f8d681..d1dd800fd9ad859cbae1b501dfadf9d6cc44655e 100644 (file)
@@ -634,18 +634,20 @@ void *timeshift_reader ( void *p )
             }
 
             /* Update */
-            cur_speed = speed;
             if (speed != 100 || state != TS_LIVE) {
               ts->state = speed == 0 ? TS_PAUSE : TS_PLAY;
               tvhtrace("timeshift", "reader - set %s", speed == 0 ? "TS_PAUSE" : "TS_PLAY");
             }
-            if (ts->state == TS_PLAY && state != TS_PLAY) {
+            if ((ts->state == TS_PLAY && state != TS_PLAY) || (speed != cur_speed)) {
               mono_play_time = mono_now;
               tvhtrace("timeshift", "update play time TS_LIVE - %"PRId64" play buffer from %"PRId64,
                        mono_now, pause_time);
+              if (speed != cur_speed)
+                pause_time = last_time;
             } else if (ts->state == TS_PAUSE && state != TS_PAUSE) {
               pause_time = last_time;
             }
+            cur_speed = speed;
             tvhlog(LOG_DEBUG, "timeshift", "ts %d change speed %d", ts->id, speed);
           }