Media/camera/1073017/source
< Media
Jump to navigation
Jump to search
Renderer
Source
title Camera Request Sequence
participant GonkCameraControl
participant GonkCameraClient
participant CameraChild
participant CameraParent
participant CameraService
participant OtherParent
participant OtherChild
participant OtherClient
participant OtherControl
participant OtherApp
participant Hardware
GonkCameraControl->GonkCameraClient: Connect()
activate GonkCameraClient
GonkCameraClient->CameraChild: RequestCameraAccess()
activate CameraChild
CameraChild->>CameraParent: REQUEST_CAMERA
deactivate CameraChild
deactivate GonkCameraClient
activate CameraParent
CameraParent->CameraService: RequestCameraAccess()
activate CameraService
alt Camera Denied
CameraService->CameraParent: CameraAccessDenied()
CameraParent->>CameraChild: CAMERA_DENIED
activate CameraChild
CameraChild->GonkCameraClient: CameraAccessDenied()
activate GonkCameraClient
GonkCameraClient->GonkCameraClient: OnCameraAccessDenied()
GonkCameraClient->GonkCameraControl: OnCameraUnavailable()
deactivate GonkCameraClient
# deactivate GonkCameraClient
# deactivate CameraChild
else Camera Allowed
CameraService->OtherParent: CameraReleaseRequired()
activate OtherParent
OtherParent->>OtherChild: RELEASE_CAMERA
activate OtherChild
deactivate OtherParent
OtherChild->OtherClient: CameraReleaseRequired()
activate OtherClient
OtherClient->Hardware: Close()
OtherClient->OtherChild: DeregisterClient()
OtherChild->>OtherParent: DEREGISTER_CLIENT
activate OtherParent
deactivate OtherChild
OtherParent->CameraService: DeregisterClient()
OtherClient->OtherControl: OnCameraDisconnected()
activate OtherControl
OtherControl->OtherApp: OnClose()
deactivate OtherClient
deactivate OtherControl
CameraService->CameraParent: CameraAccessAllowed()
deactivate OtherParent
deactivate CameraService
CameraParent->>CameraChild: CAMERA_ALLOWED
deactivate CameraParent
CameraChild->GonkCameraClient: CameraAccessAllowed()
activate GonkCameraClient
# deactivate CameraHardware
deactivate CameraChild
alt Camera No Longer Wanted
GonkCameraClient->CameraChild: DeregisterClient()
activate CameraChild
CameraChild->>CameraParent: DEREGISTER_CLIENT
activate CameraParent
deactivate CameraChild
CameraParent->CameraService: DeregisterClient()
deactivate CameraParent
else Camera Still Wanted
GonkCameraClient->Hardware: Connect()
activate Hardware
alt Connect Failed
Hardware-->GonkCameraClient: NS_ERROR_*
GonkCameraClient->CameraChild: DeregisterClient()
activate CameraChild
CameraChild->>CameraParent: DEREGISTER_CLIENT
activate CameraParent
deactivate CameraChild
CameraParent->CameraService: DeregisterClient()
deactivate CameraParent
GonkCameraClient->GonkCameraControl: OnCameraUnavailable()
else Connect Succeeded
Hardware-->GonkCameraClient: NS_OK
deactivate Hardware
GonkCameraClient-->GonkCameraControl: OnCameraConnected()
deactivate GonkCameraClient
GonkCameraControl->GonkCameraClient: Close()
activate GonkCameraClient
GonkCameraClient->+Hardware: Close()
Hardware-->-GonkCameraClient: NS_OK
GonkCameraClient->CameraChild: DeregisterClient()
activate CameraChild
CameraChild->>CameraParent: DEREGISTER_CLIENT
deactivate CameraChild
activate CameraParent
CameraParent->CameraService: DeregisterClient()
deactivate CameraParent
GonkCameraClient-->GonkCameraControl:
deactivate GonkCameraClient
end
end
end