Skip to content

Commit 5910313

Browse files
committed
Reverts camera feed creation logic (#706)
1 parent 9c62c0c commit 5910313

File tree

2 files changed

+14
-7
lines changed

2 files changed

+14
-7
lines changed

Stitch/Graph/Node/Port/Model/PortValue/Type/Media/ObjectTypes/CameraFeed/Reference/CameraFeedManager.swift

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -61,11 +61,13 @@ final class CameraFeedManager: Sendable, MiddlewareService {
6161
@MainActor
6262
init(cameraSettings: CameraSettings,
6363
isEnabled: Bool,
64-
documentDelegate: StitchDocumentViewModel) {
64+
documentDelegate: StitchDocumentViewModel,
65+
isCameraFeedNode: Bool) {
6566
self.documentDelegate = documentDelegate
6667

6768
if isEnabled {
68-
self.session = Self.createSession(cameraSettings: cameraSettings)
69+
self.session = Self.createSession(cameraSettings: cameraSettings,
70+
isCameraFeedNode: isCameraFeedNode)
6971
} else {
7072
self.session = nil
7173
}
@@ -82,22 +84,26 @@ final class CameraFeedManager: Sendable, MiddlewareService {
8284
}
8385

8486
@MainActor
85-
static func createSession(cameraSettings: CameraSettings) -> StitchCameraSession {
87+
static func createSession(cameraSettings: CameraSettings,
88+
isCameraFeedNode: Bool) -> StitchCameraSession {
8689
let cameraPosition = cameraSettings.direction.avCapturePosition
8790
let cameraPref = UserDefaults.standard.getCameraPref(position: cameraPosition)
8891
return Self.createSession(device: cameraPref,
8992
position: cameraPosition,
90-
cameraOrientation: cameraSettings.orientation)
93+
cameraOrientation: cameraSettings.orientation,
94+
isCameraFeedNode: isCameraFeedNode)
9195
}
9296

9397
// This needs to be called before changing direction of camera
9498
@MainActor
9599
static func createSession(device: StitchCameraDevice,
96100
position: AVCaptureDevice.Position,
97-
cameraOrientation: StitchCameraOrientation) -> StitchCameraSession {
101+
cameraOrientation: StitchCameraOrientation,
102+
isCameraFeedNode: Bool) -> StitchCameraSession {
98103

99104
// Only use AR if supported by device and the camera is from a RealityView layer node (not a CameraFeed patch node)
100-
let useAR = device.isARSupported
105+
// MARK: isCameraFeedNode is a necessary check to prevent crashes on iPad
106+
let useAR = device.isARSupported && !isCameraFeedNode
101107

102108
// Must get called on main thread
103109
let session: StitchCameraSession = useAR ? StitchARView() : StitchAVCaptureSession()

Stitch/Graph/Node/Port/Model/PortValue/Type/Media/ObjectTypes/CameraFeed/Util/CameraUtil.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,8 @@ extension StitchDocumentViewModel {
126126

127127
let cameraFeed = CameraFeedManager(cameraSettings: document.cameraSettings,
128128
isEnabled: true,
129-
documentDelegate: document)
129+
documentDelegate: document,
130+
isCameraFeedNode: nodeKind == .patch(.cameraFeed))
130131

131132
document.cameraFeedManager = .loaded(.cameraFeedManager(cameraFeed))
132133
}

0 commit comments

Comments
 (0)