Skip to content

Support high refresh rate displays (120Hz/144Hz) and resolve frame dr… - #14991

Open
smartworldarafath wants to merge 1 commit into
signalapp:mainfrom
smartworldarafath:perf/high-refresh-rate-and-frame-drop-fixes
Open

smartworldarafath wants to merge 1 commit into
signalapp:mainfrom
smartworldarafath:perf/high-refresh-rate-and-frame-drop-fixes

Conversation

@smartworldarafath

@smartworldarafath smartworldarafath commented Sep 5, 2026 •

Copy link
Copy Markdown

…op bottlenecks

  • Configure window preferredMaxDisplayRefreshRate and preferredDisplayModeId in WindowUtil/BaseActivity to unlock true 120Hz and 144Hz on supported displays and OEM devices
  • Modernize FrameRateTracker display retrieval and dynamically update refresh rate calculations on dynamic refresh rate displays
  • Optimize SpoilerPaint and SpoilerRendererDelegate to throttle view invalidations to actual particle updates, eliminating redundant 120Hz draw passes
  • Remove heap array allocations in spoiler measurements caching by using primitive composite keys
  • Prevent DefaultLifecycleObserver leaks during RecyclerView scrolling in SpoilerRendererDelegate
  • Decouple frameTime from displayText remember keys in Compose SpoilerText to prevent full text recomposition and re-layout loops at 120Hz
  • Prevent dead Activity context leaks in CachedInflater.ViewCache
  • Increase RecyclerView item view cache size in ConversationFragment to smooth rapid 120Hz/144Hz scrolling

First time contributor checklist

Contributor checklist

  • Device A, Android X.Y.Z
  • Device B, Android Z.Y
  • Virtual device W, Android Y.Y.Z
  • My contribution is fully baked and ready to be merged as is
  • I ensure that all the open issues my contribution fixes are mentioned in the commit message of my first commit using the Fixes #1234 syntax

Description

…op bottlenecks

- Configure window preferredMaxDisplayRefreshRate and preferredDisplayModeId in WindowUtil/BaseActivity to unlock true 120Hz and 144Hz on supported displays and OEM devices
- Modernize FrameRateTracker display retrieval and dynamically update refresh rate calculations on dynamic refresh rate displays
- Optimize SpoilerPaint and SpoilerRendererDelegate to throttle view invalidations to actual particle updates, eliminating redundant 120Hz draw passes
- Remove heap array allocations in spoiler measurements caching by using primitive composite keys
- Prevent DefaultLifecycleObserver leaks during RecyclerView scrolling in SpoilerRendererDelegate
- Decouple frameTime from displayText remember keys in Compose SpoilerText to prevent full text recomposition and re-layout loops at 120Hz
- Prevent dead Activity context leaks in CachedInflater.ViewCache
- Increase RecyclerView item view cache size in ConversationFragment to smooth rapid 120Hz/144Hz scrolling
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.

1 participant