Skip to content

Commit 29c8292

Browse files
Fix direct boot camera startup crash (#2464)
- Register camera switch callbacks only after the camera manager is ready - Guard early camera availability callbacks during locked-device startup - Prevent direct boot service crash loops before unlock Auto-generated Co-authored-by: Owen McGirr <o.a.mcgirr@gmail.com>
1 parent 8b5103d commit 29c8292

1 file changed

Lines changed: 2 additions & 4 deletions

File tree

app/src/main/java/com/enaboapps/switchify/service/core/SwitchifyAccessibilityService.kt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -109,8 +109,6 @@ class SwitchifyAccessibilityService : AccessibilityService(), LifecycleOwner,
109109
val externalSwitchListener = ServiceCore.getExternalSwitchListener() ?: return
110110
val switchEventProvider = ServiceCore.getSwitchEventProvider() ?: return
111111

112-
switchEventProvider.addCameraSwitchListener(this)
113-
114112
screenWatcherManager.register(scanningManager, externalSwitchListener)
115113

116114
scanSettings = ScanSettings(this)
@@ -124,8 +122,8 @@ class SwitchifyAccessibilityService : AccessibilityService(), LifecycleOwner,
124122
onServiceConnected = { setupCameraServiceCallbacks() }
125123
)
126124

127-
// Register camera manager with ServiceCore for HeadControl coordination
128125
ServiceCore.setCameraManager(cameraManager)
126+
switchEventProvider.addCameraSwitchListener(this)
129127
eventPipeline =
130128
AccessibilityEventPipeline(serviceScope) { nodeUpdateCoordinator.processAccessibilityUpdate() }
131129
eventPipeline.start()
@@ -365,7 +363,7 @@ class SwitchifyAccessibilityService : AccessibilityService(), LifecycleOwner,
365363

366364
override fun onCameraSwitchAvailabilityChanged(available: Boolean) {
367365
logd("Camera switch availability changed: $available")
368-
// Re-evaluate camera state when switches change
366+
if (!::cameraManager.isInitialized) return
369367
cameraManager.evaluateAndUpdateCameraState()
370368
}
371369

0 commit comments

Comments
 (0)