Opened 13 years ago
Closed 13 years ago
#9625 closed Bug Report - General (fixed)
Exiting near end of still-recording program results in no bookmark set
Reported by: | Owned by: | sphery | |
---|---|---|---|
Priority: | minor | Milestone: | 0.25 |
Component: | MythTV - General | Version: | 0.24-fixes |
Severity: | medium | Keywords: | |
Cc: | Ticket locked: | no |
Description
From http://www.gossamer-threads.com/lists/mythtv/users/473755 :
I have the setting "Action on playback exit: Save position and exit". This saves a bookmark when I press Esc while playing a recording, allowing me to resume from where I left off.
However, if I start playing a program while it is still being recorded, and skip right up to the end (or as close to the end as I can get, which is a few seconds before the end), then press Esc, a bookmark is *not* set. This means that when I play the recording again, it starts from the beginning rather than when I got up to.
I often "chase play" recordings like this, like sporting events, where I start playing the program late and skip through the adverts, and catch up to the live broadcast. It's OK if I continue playing, but if I stop, no bookmark is set and it's annoying when it happens. The workaround is to pause or skip back a few seconds before stopping, but I keep forgetting to do so.
I think this problem is new in 0.23 or 0.24. It certainly happens now with up-to-date 0.24-fixes, and I certainly don't recall it happening in 0.22 and earlier (I only used 0.23 for a day or two).
Jim Stichnoth says:
TV::PrepareToExitPlayer?() won't set a bookmark if IsNearEnd?() is true, which must be what's happening here. Probably an additional test on the recording state should be added, like:
if (bookmark_it&& (!ctx->player->IsNearEnd?() StateIsRecording?(GetState?(ctx))))
ctx->player->SetBookmark?();
The following test on db_auto_set_watched probably needs similar treatment.
That sounds sensible. Alternatively, maybe the check for an in-progress recording could be moved to IsNearEnd?(), so that function would return false if a recording is in progress, no matter where the current position is? It seems logical to me that, even if you are almost at the "as live" position, you're still not near the *end* of the recording, as the recording has potentially hours to do. Of course, someone would need to check that this doesn't break other uses of IsNearEnd?().
Allow near-end bookmarks for in-progress recordings.
When exiting in-progress recordings, what's now near the end may not be near the end later, so go ahead and set a bookmark (for those who have specified "Save position and exit"), so users don't lose their place.
I didn't modify MythPlayer::SetWatched?(), since I have a feeling quite a few users will watch in-progress recordings and exit after the end of the show, but before recording stops--in which case they have watched it and just want to be done with it (rather than have to manually mark it watched). On the other hand, users who watch until they're caught up with current time then exit before the end of the show will likely come back to finish watching the recording sooner, rather than later (so it will be watched soon enough). Alternatively, if the auto-detection does the wrong thing, they can choose to mark the show unwatched.
Since we can't always do the right thing automatically, I'm trying to guess what's likely right for the most people. That said, I have some projects in the works to improve both bookmark and watched handling.
Fixes #9625.