summaryrefslogtreecommitdiffstats
path: root/services
diff options
context:
space:
mode:
authorWu-cheng Li <wuchengli@google.com>2011-07-19 14:47:20 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2011-07-19 14:47:20 -0700
commit2cd60e3069e93c11676019c8405d3941cd2ac5b7 (patch)
treee32f72c949478de5c93885b2518dde05e6540162 /services
parent9bc7af17974f448291a44912566ec7472a0d798b (diff)
parent7574da5a501fc9289fee49fdaf1fdb9d47dae2b6 (diff)
downloadframeworks_av-2cd60e3069e93c11676019c8405d3941cd2ac5b7.zip
frameworks_av-2cd60e3069e93c11676019c8405d3941cd2ac5b7.tar.gz
frameworks_av-2cd60e3069e93c11676019c8405d3941cd2ac5b7.tar.bz2
Merge "Disconnect the native window in CameraService::Client::disconnect."
Diffstat (limited to 'services')
-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 637ccd8..96b26e7 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);