@@ -116,7 +116,6 @@ extension RemoteCamSession {
116116 case is OnEnter :
117117 print ( " 🔍 DEBUG: Camera starting up " )
118118 getFrameSender ( ) ? . tell ( msg: SetSession ( peer: peer, session: self ) )
119-
120119 // Send capabilities after a brief delay to ensure camera is fully initialized
121120 DispatchQueue . main. asyncAfter ( deadline: . now( ) + 0.5 ) {
122121 print ( " 🔍 DEBUG: Camera entered - gathering and sending capabilities (delayed) " )
@@ -130,7 +129,20 @@ extension RemoteCamSession {
130129 } )
131130 } else {
132131 print ( " ❌ DEBUG: Failed to gather current camera capabilities in OnEnter " )
133- }
132+ }
133+ }
134+
135+ // MARK: - Monitor Join Handling
136+ case is RemoteCmd . PeerBecameMonitor :
137+ // When a new monitor joins, immediately send camera capabilities
138+ print ( " 🔍 DEBUG: Camera received PeerBecameMonitor - sending capabilities immediately " )
139+ ctrl. gatherAllCameraCapabilities ( )
140+ if let capabilities = ctrl. gatherCurrentCameraCapabilities ( ) {
141+ print ( " 🔍 DEBUG: Sending camera capabilities to new monitor " )
142+ print ( " 🔍 DEBUG: Available lenses: \( capabilities. getCurrentCameraInfo ( ) ? . availableLenses ?? [ ] ) " )
143+ self . sendCommandOrGoToScanning ( peer: [ peer] , msg: capabilities)
144+ } else {
145+ print ( " ❌ DEBUG: Failed to gather current camera capabilities for new monitor " )
134146 }
135147
136148 case is RemoteCmd . RequestFrame :
@@ -164,7 +176,6 @@ extension RemoteCamSession {
164176 state: self . cameraTakingPic ( peer: peer, ctrl: ctrl, lobby: lobbyWrapper, sendMediaToPeer: cmd. sendMediaToPeer) )
165177
166178 case is RemoteCmd . ToggleCamera :
167- sendCapabilitiesIfNeeded ( ) // Ensure capabilities are sent
168179 print ( " 🔍 DEBUG: Camera received ToggleCamera command " )
169180 let result = ctrl. toggleCamera ( )
170181 var resp : Message ?
0 commit comments