From 7574da5a501fc9289fee49fdaf1fdb9d47dae2b6 Mon Sep 17 00:00:00 2001 From: Wu-cheng Li Date: Wed, 20 Jul 2011 05:35:02 +0800 Subject: Disconnect the native window in CameraService::Client::disconnect. bug:5048372 Change-Id: I6886907a672ddf5580b988ca5bc13e3dc26d4385 --- services/camera/libcameraservice/CameraService.cpp | 23 +++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) (limited to 'services/camera') 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& client) { return NO_ERROR; } +static void disconnectWindow(const sp& 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& 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& binder, const sp& window) { Mutex::Autolock lock(mLock); -- cgit v1.1