summaryrefslogtreecommitdiffstats
path: root/services/camera/libcameraservice/CameraService.cpp
diff options
context:
space:
mode:
authorWu-cheng Li <wuchengli@google.com>2011-07-20 05:35:02 +0800
committerWu-cheng Li <wuchengli@google.com>2011-07-20 05:35:02 +0800
commit7574da5a501fc9289fee49fdaf1fdb9d47dae2b6 (patch)
tree091907efea3f17c12e2cb199679ba138991e8641 /services/camera/libcameraservice/CameraService.cpp
parent8ebe5be6b0b3caa7d9d6277a1216ed786bd1e66a (diff)
downloadframeworks_av-7574da5a501fc9289fee49fdaf1fdb9d47dae2b6.zip
frameworks_av-7574da5a501fc9289fee49fdaf1fdb9d47dae2b6.tar.gz
frameworks_av-7574da5a501fc9289fee49fdaf1fdb9d47dae2b6.tar.bz2
Disconnect the native window in CameraService::Client::disconnect.
bug:5048372 Change-Id: I6886907a672ddf5580b988ca5bc13e3dc26d4385
Diffstat (limited to 'services/camera/libcameraservice/CameraService.cpp')
-rw-r--r--services/camera/libcameraservice/CameraService.cpp23
1 files changed, 12 insertions, 11 deletions
diff --git a/services/camera/libcameraservice/CameraService.cpp b/services/camera/libcameraservice/CameraService.cpp
index 0eff776..07002ac 100644
--- a/services/camera/libcameraservice/CameraService.cpp
+++ b/services/camera/libcameraservice/CameraService.cpp
@@ -458,6 +458,17 @@ status_t CameraService::Client::connect(const sp<ICameraClient>& client) {
return NO_ERROR;
}
+static void disconnectWindow(const sp<ANativeWindow>& window) {
+ if (window != 0) {
+ status_t result = native_window_disconnect(window.get(),
+ NATIVE_WINDOW_API_CAMERA);
+ if (result != NO_ERROR) {
+ LOGW("native_window_disconnect failed: %s (%d)", strerror(-result),
+ result);
+ }
+ }
+}
+
void CameraService::Client::disconnect() {
int callingPid = getCallingPid();
LOG1("disconnect E (pid %d)", callingPid);
@@ -489,6 +500,7 @@ void CameraService::Client::disconnect() {
// Release the held ANativeWindow resources.
if (mPreviewWindow != 0) {
+ disconnectWindow(mPreviewWindow);
mPreviewWindow = 0;
mHardware->setPreviewWindow(mPreviewWindow);
}
@@ -502,17 +514,6 @@ void CameraService::Client::disconnect() {
// ----------------------------------------------------------------------------
-static void disconnectWindow(const sp<ANativeWindow>& window) {
- if (window != 0) {
- status_t result = native_window_disconnect(window.get(),
- NATIVE_WINDOW_API_CAMERA);
- if (result != NO_ERROR) {
- LOGW("native_window_disconnect failed: %s (%d)", strerror(-result),
- result);
- }
- }
-}
-
status_t CameraService::Client::setPreviewWindow(const sp<IBinder>& binder,
const sp<ANativeWindow>& window) {
Mutex::Autolock lock(mLock);