aboutsummaryrefslogtreecommitdiff
path: root/Emby.Server.Implementations/Session/SessionManager.cs
diff options
context:
space:
mode:
authorShadowghost <Shadowghost@users.noreply.github.com>2026-10-05 19:18:48 -0400
committerCody Robibero <cody@robibe.ro>2026-10-05 19:18:48 -0400
commit6983363761b34d7efaef8d9074e874cae481cb1e (patch)
tree939c98c8c7287ec0fa074acbfb79009b7a12b3b5 /Emby.Server.Implementations/Session/SessionManager.cs
parent0ce7acdb614cb0d402fb5ff53878e3f9da664bb4 (diff)
Backport pull request #18202 from jellyfin/release-12.z
Don't advance rewatch Next Up past a barely started episode Original-merge: d575c6f1f9b49069bdc607fda60099c01e055dda Merged-by: crobibero <cody@robibe.ro> Backported-by: Cody Robibero <cody@robibe.ro>
Diffstat (limited to 'Emby.Server.Implementations/Session/SessionManager.cs')
-rw-r--r--Emby.Server.Implementations/Session/SessionManager.cs20
1 files changed, 18 insertions, 2 deletions
diff --git a/Emby.Server.Implementations/Session/SessionManager.cs b/Emby.Server.Implementations/Session/SessionManager.cs
index 08e2578867..dd71f843e8 100644
--- a/Emby.Server.Implementations/Session/SessionManager.cs
+++ b/Emby.Server.Implementations/Session/SessionManager.cs
@@ -846,7 +846,13 @@ namespace Emby.Server.Implementations.Session
var data = _userDataManager.GetUserData(user, item);
data.PlayCount++;
- data.LastPlayedDate = DateTime.UtcNow;
+
+ // Re-watching a played item only counts once a progress or stop report gets past the resume threshold,
+ // otherwise rewatch Next Up moves on from an episode that was barely started
+ if (!data.Played || !item.SupportsPositionTicksResume)
+ {
+ data.LastPlayedDate = DateTime.UtcNow;
+ }
if (item.SupportsPlayedStatus && !item.SupportsPositionTicksResume)
{
@@ -972,7 +978,12 @@ namespace Emby.Server.Implementations.Session
if (positionTicks.HasValue)
{
- _userDataManager.UpdatePlayState(item, data, positionTicks.Value);
+ var playedToCompletion = _userDataManager.UpdatePlayState(item, data, positionTicks.Value);
+ if (playedToCompletion || data.PlaybackPositionTicks > 0)
+ {
+ data.LastPlayedDate = DateTime.UtcNow;
+ }
+
changed = true;
}
@@ -1174,6 +1185,10 @@ namespace Emby.Server.Implementations.Session
if (positionTicks.HasValue)
{
playedToCompletion = _userDataManager.UpdatePlayState(item, data, positionTicks.Value);
+ if (playedToCompletion || data.PlaybackPositionTicks > 0)
+ {
+ data.LastPlayedDate = DateTime.UtcNow;
+ }
}
else
{
@@ -1181,6 +1196,7 @@ namespace Emby.Server.Implementations.Session
data.PlayCount++;
data.Played = item.SupportsPlayedStatus;
data.PlaybackPositionTicks = 0;
+ data.LastPlayedDate = DateTime.UtcNow;
playedToCompletion = true;
}