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