Skip to content

Add Samsung One UI fully external display support - #589

Open
bynkook wants to merge 1 commit into
ClassicOldSong:moonlight-noirfrom
bynkook:pr/samsung-fully-external-display
Open

Add Samsung One UI fully external display support#589
bynkook wants to merge 1 commit into
ClassicOldSong:moonlight-noirfrom
bynkook:pr/samsung-fully-external-display

Conversation

@bynkook

@bynkook bynkook commented Aug 10, 2026

Copy link
Copy Markdown

Summary

  • add an opt-in Samsung One UI fully external display path backed by a Presentation
  • keep Game as the normal task/session owner and pass the external display ID explicitly
  • route the render window, controller input, pointer capture, display mode, and lifecycle handling through the Presentation-owned window
  • handle display removal, invalid displays, controller foreground state, and teardown without relaunching the global focus path

Why

Launching Game directly on a secondary display is fragile on Samsung One UI. This uses the normal Activity launch path while a dedicated controller Activity and Presentation own the external-display surface.

This is intentionally separate from the codec low-latency work.

Validation

  • manually tested on a Samsung Galaxy S25+ (SM-S936N) connected to a real external monitor
  • verified external Presentation startup, streaming, controller input, and session teardown
  • assembleNonRoot_gameDebug: passed, including native builds for all configured ABIs
  • JVM suite: 106 tests, 101 passed, 5 existing unrelated Robolectric failures, 0 errors, 0 skipped

The five failures are the existing layout/profile/startup baseline failures and are unchanged by this patch.

Known startup behavior

The Presentation surface is opaque before the first decoded frame, so the monitor can briefly show black during session startup. In captured logs this was about 1.9-2.6 seconds. There was no HDMI hotplug, display mode restart, codec fallback, or decoder restart associated with that interval.

Related discussion: #579

@bynkook
bynkook marked this pull request as ready for review August 20, 2026 11:11
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