Camera2ClientBase::disconnect()
->detachDevice()
Camera2ClientBase
close/disconnect/detachDevice的关系???
Camera3Device::disconnectImpl()
CameraDeviceClient::detachDevice()
Camera2ClientBase::detachDevice()
Camera3Device里HalInterface链接到如下:
hardware/interfaces/camera/device/3.4/default/CameraDeviceSession.cpp
template <typename TClientBase>
Camera2ClientBase<TClientBase>::~Camera2ClientBase() {
ATRACE_CALL();
TClientBase::mDestructionStarted = true;
disconnect();
ALOGI("Closed Camera %s. Client was: %s (PID %d, UID %u)",
TClientBase::mCameraIdStr.string(),
String8(TClientBase::mClientPackageName).string(),
mInitialClientPid, TClientBase::mClientUid);
}
status_t Camera3Device::waitUntilDrained() {
ATRACE_CALL();
Mutex::Autolock il(mInterfaceLock);
nsecs_t maxExpectedDuration = getExpectedInFlightDuration();
Mutex::Autolock l(mLock);
return waitUntilDrainedLocked(maxExpectedDuration);