Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 13528f78 authored by Wu-cheng Li's avatar Wu-cheng Li
Browse files

Disconnect the native window in CameraService::Client::disconnect.

bug:5048372
Change-Id: I6886907a672ddf5580b988ca5bc13e3dc26d4385
parent 2e29de7c
Loading
Loading
Loading
Loading
+12 −11
Original line number Diff line number Diff line
@@ -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);