diff options
| author | Wu-cheng Li <wuchengli@google.com> | 2011-07-20 05:35:02 +0800 | 
|---|---|---|
| committer | Wu-cheng Li <wuchengli@google.com> | 2011-07-20 05:35:02 +0800 | 
| commit | 7574da5a501fc9289fee49fdaf1fdb9d47dae2b6 (patch) | |
| tree | 091907efea3f17c12e2cb199679ba138991e8641 /services | |
| parent | 8ebe5be6b0b3caa7d9d6277a1216ed786bd1e66a (diff) | |
| download | frameworks_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')
| -rw-r--r-- | services/camera/libcameraservice/CameraService.cpp | 23 | 
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);  | 
