From: Jaroslav Kysela Date: Mon, 4 Jan 2016 20:52:09 +0000 (+0100) Subject: timeshift: fix the time offset when speed changes X-Git-Tag: v4.2.1~1225 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=d77186df756c2cd7089f1b95c22bbf005ffc18e1;p=thirdparty%2Ftvheadend.git timeshift: fix the time offset when speed changes --- diff --git a/src/timeshift/timeshift_reader.c b/src/timeshift/timeshift_reader.c index 940095133..d1dd800fd 100644 --- a/src/timeshift/timeshift_reader.c +++ b/src/timeshift/timeshift_reader.c @@ -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); }