Skip to content

fix:限制Linux下MPRIS状态更新的频率,以防止出现抽搐bug。#704

Merged
imsyy merged 1 commit into
SPlayer-Dev:devfrom
lrst6963:dev
Jan 1, 2026
Merged

fix:限制Linux下MPRIS状态更新的频率,以防止出现抽搐bug。#704
imsyy merged 1 commit into
SPlayer-Dev:devfrom
lrst6963:dev

Conversation

@lrst6963
Copy link
Copy Markdown
Contributor

@lrst6963 lrst6963 commented Jan 1, 2026

_20260101_082153.webm

Copilot AI review requested due to automatic review settings January 1, 2026 01:22
@vercel
Copy link
Copy Markdown

vercel Bot commented Jan 1, 2026

@lrst6963 is attempting to deploy a commit to the imsyy's projects Team on Vercel.

A member of the Team first needs to authorize it.

@gemini-code-assist
Copy link
Copy Markdown
Contributor

Summary of Changes

Hello @lrst6963, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

此拉取请求旨在通过引入节流机制来优化媒体会话(MediaSession)的位置状态更新逻辑。具体来说,它解决了在 Linux 环境下,由于 MPRIS 媒体播放器接口接收过于频繁的更新而导致进度条显示异常(“抽搐”)的问题,从而提升了用户体验。

Highlights

  • 引入节流函数: 从 lodash-es 库中引入了 throttle 函数,用于控制函数执行频率。
  • 限制MPRIS状态更新频率: 将 navigator.mediaSession.setPositionState 的调用封装到一个新的节流方法 throttledUpdatePositionState 中,并设置了 1 秒的节流时间。
  • 修复Linux下MPRIS抽搐问题: 通过限制更新频率,解决了在 Linux 系统下 MPRIS 进度条因频繁更新而导致的“抽搐”视觉问题。
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

这个 PR 通过对 navigator.mediaSession.setPositionState 的调用进行节流(throttle),解决了在 Linux 上 MPRIS 进度条抽搐的问题。这是一个很好的修复。我注意到代码中有一处可以优化的地方,即一个重复的条件检查,我在具体的评论中指出了。总体来说,代码变更清晰且有效。

Comment thread src/core/player/MediaSessionManager.ts Outdated
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR fixes a visual glitching issue with the MPRIS progress bar on Linux by throttling the frequency of media session position state updates to once per second.

  • Introduced throttling to limit MPRIS position state updates from occurring too frequently
  • Added lodash-es throttle import to MediaSessionManager
  • Refactored the position state update logic into a separate throttled method

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/core/player/MediaSessionManager.ts
Comment thread src/core/player/MediaSessionManager.ts
@lrst6963 lrst6963 force-pushed the dev branch 2 times, most recently from cbb0d99 to 08eb810 Compare January 1, 2026 01:38
@MoYingJi
Copy link
Copy Markdown
Collaborator

MoYingJi commented Jan 1, 2026

感觉治标不治本呢,只是降低了出现频率,仍有可能出现鬼畜

@lrst6963
Copy link
Copy Markdown
Contributor Author

lrst6963 commented Jan 1, 2026

感觉治标不治本呢,只是降低了出现频率,仍有可能出现鬼畜

目前Linux下是标准web协议,只能这样子了,要的话就是重构添加mpris协议

@imsyy imsyy merged commit 1532601 into SPlayer-Dev:dev Jan 1, 2026
1 check failed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants