author | Guosong Zhou <guosong.zhou@amlogic.com> | 2015-09-02 07:02:40 (GMT) |
---|---|---|
committer | Frank Chen <frank.chen@amlogic.com> | 2015-09-09 11:07:20 (GMT) |
commit | 180e46fe538b9c908e331d1456645c0a333559c0 (patch) | |
tree | 7e7df82ee7ec60222396ffc42517dc830303bb87 | |
parent | 07df6456e0dea378b352ecbd8cafb622f9bbf2bf (diff) | |
download | camera-180e46fe538b9c908e331d1456645c0a333559c0.zip camera-180e46fe538b9c908e331d1456645c0a333559c0.tar.gz camera-180e46fe538b9c908e331d1456645c0a333559c0.tar.bz2 |
PD#111061:fix usb camera plug problem
Change-Id: I85c8b3cf0942f761c71caea14197f3c098d317ff
-rw-r--r-- | v3/EmulatedCameraFactory.cpp | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/v3/EmulatedCameraFactory.cpp b/v3/EmulatedCameraFactory.cpp index 0f6a6fa..3e86aee 100644 --- a/v3/EmulatedCameraFactory.cpp +++ b/v3/EmulatedCameraFactory.cpp @@ -482,11 +482,18 @@ void EmulatedCameraFactory::onStatusChanged(int cameraId, int newStatus) CAMHAL_LOGDB("mEmulatedCameraNum =%d\n", mEmulatedCameraNum); n = getValidCameraOjectId(); if ((n != cameraId) && (mEmulatedCameras[n] != NULL)) { + DBG_LOGA("device node changed"); mEmulatedCameras[n]->unplugCamera(); delete mEmulatedCameras[n]; mEmulatedCameras[n] = NULL; } + if (mEmulatedCameras[cameraId] != NULL && (!mEmulatedCameras[cameraId]->getHotplugStatus())) { + DBG_LOGA("close EmulatedFakeCamera3 object for the last time"); + delete mEmulatedCameras[cameraId]; + mEmulatedCameras[cameraId] = NULL; + } + EmulatedBaseCamera *cam = mEmulatedCameras[cameraId]; if ((!cam) && (newStatus == CAMERA_DEVICE_STATUS_PRESENT)) { @@ -549,8 +556,9 @@ void EmulatedCameraFactory::onStatusChanged(int cameraId, int newStatus) CAMHAL_LOGDB("mEmulatedCameraNum =%d\n", mEmulatedCameraNum); if (newStatus == CAMERA_DEVICE_STATUS_NOT_PRESENT) { + mEmulatedCameraNum --; j = getValidCameraOjectId(); - while (m < 2000) { + while (m < 200) { if (mEmulatedCameras[j] != NULL) { if (mEmulatedCameras[j]->getCameraStatus()) { DBG_LOGA("start to delete EmulatedFakeCamera3 object"); @@ -565,7 +573,9 @@ void EmulatedCameraFactory::onStatusChanged(int cameraId, int newStatus) break; } } - mEmulatedCameraNum --; + if (m == 200) { + cam->unplugCamera(); + } } else if (newStatus == CAMERA_DEVICE_STATUS_PRESENT) { CAMHAL_LOGDA("camera plugged again?\n"); cam->plugCamera(); |