Repository navigation
Adopt UIScene lifecycle and support iPhone Duo resizing - #729
antoinealbaut23 wants to merge 2 commits into
Conversation
Apps built with the iOS 27 SDK are terminated at launch by UIKit if they don't use the scene-based lifecycle. Add a SceneDelegate that creates the window from the existing iPhone/iPad storyboards, and forward home screen quick actions and launch shortcuts to the existing AppDelegate handling. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The display layer was sized once when the stream started, so the video didn't follow window size changes during a stream, such as folding or unfolding iPhone Duo. Let the stream view follow its parent and lay out the display layer again when the size changes. Fixes moonlight-stream#728 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Tested a full streaming session on iPhone Duo (iOS 27.1) with this branch: the app fills the entire inner display and streaming works perfectly, including folding and unfolding during the stream. |
|
Built and running on my Duo as well! |
|
Another Duo owner here. Built master plus this PR with Xcode and it's been running great on my iPhone Duo. This plus the cellular fix already on master (#669) is everything I needed, so really hoping this lands and ships. Would love to retire my sideloaded copy! |
Say up front that this is an unofficial fork and where to get the official app and its support, credit upstream PR moonlight-stream#729 for the scene lifecycle work, list what's different for iPhone Duo, and update the build steps for Xcode 27.1. Remove the App Store badge for the official app. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
I built current master plus this PR with Xcode 27.2 for a physical iPhone Duo running iOS 27.2. The app fills the inner display; pairing with Sunshine and starting a stream both work. On the inner display, I found a black band above the host-list navigation bar. I proposed a small follow-up against this branch: antoinealbaut23#1 🤖 Generated with Claude Code |
|
Tested this on my iPhone Duo and it works great! Built current master + this PR with Xcode 27.2 and ran it on iOS 27.2. Pairing, streaming, and folding / unfolding mid-stream all just work, and it looks amazing on the inner display. A few things I noticed while testing:
Thanks for putting this together! |
Fixes #728.
On iPhone Duo, the current App Store build runs letterboxed on the inner display because it was built with an older SDK. Rebuilding with the iOS 27.1+ SDK fixes that, but exposes two problems this PR addresses.
1. Crash at launch with the iOS 27 SDK
When built with the current SDK, the app is terminated immediately at launch on iOS 27.1 (
EXC_BREAKPOINTin_UIApplicationEvaluateRuntimeIssueForNoSceneLifecycleAdoption). UIKit now requires the scene-based lifecycle.UIApplicationSceneManifesttoLimelight-Info.plistand aSceneDelegate(iOS only, inAppDelegate.mso no project file changes are needed).iPhone/iPadstoryboards, which replaceUIMainStoryboardFile/UIMainStoryboardFile~ipad.AppDelegatehandling, and the Core Data context is saved when the scene enters the background.2. Video doesn't follow window size changes
VideoDecoderRenderersized theAVSampleBufferDisplayLayeronce when the stream started. Folding or unfolding iPhone Duo during a stream changes the window size, and the video stayed at the old size.StreamFrameViewControllerlays out the display layer again when its size changes, through a new-[StreamManager updateRendererLayout].Testing
🤖 Generated with Claude Code