Loading camera/device/default/ExternalCameraDeviceSession.cpp +12 −12 Original line number Original line Diff line number Diff line Loading @@ -224,10 +224,6 @@ void ExternalCameraDeviceSession::initOutputThread() { } } void ExternalCameraDeviceSession::closeOutputThread() { void ExternalCameraDeviceSession::closeOutputThread() { closeOutputThreadImpl(); } void ExternalCameraDeviceSession::closeOutputThreadImpl() { if (mOutputThread != nullptr) { if (mOutputThread != nullptr) { mOutputThread->flush(); mOutputThread->flush(); mOutputThread->requestExitAndWait(); mOutputThread->requestExitAndWait(); Loading @@ -235,6 +231,13 @@ void ExternalCameraDeviceSession::closeOutputThreadImpl() { } } } } void ExternalCameraDeviceSession::closeBufferRequestThread() { if (mBufferRequestThread != nullptr) { mBufferRequestThread->requestExitAndWait(); mBufferRequestThread.reset(); } } Status ExternalCameraDeviceSession::initStatus() const { Status ExternalCameraDeviceSession::initStatus() const { Mutex::Autolock _l(mLock); Mutex::Autolock _l(mLock); Status status = Status::OK; Status status = Status::OK; Loading @@ -248,7 +251,7 @@ Status ExternalCameraDeviceSession::initStatus() const { ExternalCameraDeviceSession::~ExternalCameraDeviceSession() { ExternalCameraDeviceSession::~ExternalCameraDeviceSession() { if (!isClosed()) { if (!isClosed()) { ALOGE("ExternalCameraDeviceSession deleted before close!"); ALOGE("ExternalCameraDeviceSession deleted before close!"); close(/*callerIsDtor*/ true); closeImpl(); } } } } Loading Loading @@ -1411,19 +1414,16 @@ Status ExternalCameraDeviceSession::importBufferLocked(int32_t streamId, uint64_ } } ScopedAStatus ExternalCameraDeviceSession::close() { ScopedAStatus ExternalCameraDeviceSession::close() { close(false); closeImpl(); return fromStatus(Status::OK); return fromStatus(Status::OK); } } void ExternalCameraDeviceSession::close(bool callerIsDtor) { void ExternalCameraDeviceSession::closeImpl() { Mutex::Autolock _il(mInterfaceLock); Mutex::Autolock _il(mInterfaceLock); bool closed = isClosed(); bool closed = isClosed(); if (!closed) { if (!closed) { if (callerIsDtor) { closeOutputThreadImpl(); } else { closeOutputThread(); closeOutputThread(); } closeBufferRequestThread(); Mutex::Autolock _l(mLock); Mutex::Autolock _l(mLock); // free all buffers // free all buffers Loading camera/device/default/ExternalCameraDeviceSession.h +2 −2 Original line number Original line Diff line number Diff line Loading @@ -240,9 +240,9 @@ class ExternalCameraDeviceSession : public BnCameraDeviceSession, public OutputT // To init/close different version of output thread // To init/close different version of output thread void initOutputThread(); void initOutputThread(); void closeOutputThread(); void closeOutputThread(); void closeOutputThreadImpl(); void closeBufferRequestThread(); void close(bool callerIsDtor); void closeImpl(); Status initStatus() const; Status initStatus() const; status_t initDefaultRequests(); status_t initDefaultRequests(); Loading Loading
camera/device/default/ExternalCameraDeviceSession.cpp +12 −12 Original line number Original line Diff line number Diff line Loading @@ -224,10 +224,6 @@ void ExternalCameraDeviceSession::initOutputThread() { } } void ExternalCameraDeviceSession::closeOutputThread() { void ExternalCameraDeviceSession::closeOutputThread() { closeOutputThreadImpl(); } void ExternalCameraDeviceSession::closeOutputThreadImpl() { if (mOutputThread != nullptr) { if (mOutputThread != nullptr) { mOutputThread->flush(); mOutputThread->flush(); mOutputThread->requestExitAndWait(); mOutputThread->requestExitAndWait(); Loading @@ -235,6 +231,13 @@ void ExternalCameraDeviceSession::closeOutputThreadImpl() { } } } } void ExternalCameraDeviceSession::closeBufferRequestThread() { if (mBufferRequestThread != nullptr) { mBufferRequestThread->requestExitAndWait(); mBufferRequestThread.reset(); } } Status ExternalCameraDeviceSession::initStatus() const { Status ExternalCameraDeviceSession::initStatus() const { Mutex::Autolock _l(mLock); Mutex::Autolock _l(mLock); Status status = Status::OK; Status status = Status::OK; Loading @@ -248,7 +251,7 @@ Status ExternalCameraDeviceSession::initStatus() const { ExternalCameraDeviceSession::~ExternalCameraDeviceSession() { ExternalCameraDeviceSession::~ExternalCameraDeviceSession() { if (!isClosed()) { if (!isClosed()) { ALOGE("ExternalCameraDeviceSession deleted before close!"); ALOGE("ExternalCameraDeviceSession deleted before close!"); close(/*callerIsDtor*/ true); closeImpl(); } } } } Loading Loading @@ -1411,19 +1414,16 @@ Status ExternalCameraDeviceSession::importBufferLocked(int32_t streamId, uint64_ } } ScopedAStatus ExternalCameraDeviceSession::close() { ScopedAStatus ExternalCameraDeviceSession::close() { close(false); closeImpl(); return fromStatus(Status::OK); return fromStatus(Status::OK); } } void ExternalCameraDeviceSession::close(bool callerIsDtor) { void ExternalCameraDeviceSession::closeImpl() { Mutex::Autolock _il(mInterfaceLock); Mutex::Autolock _il(mInterfaceLock); bool closed = isClosed(); bool closed = isClosed(); if (!closed) { if (!closed) { if (callerIsDtor) { closeOutputThreadImpl(); } else { closeOutputThread(); closeOutputThread(); } closeBufferRequestThread(); Mutex::Autolock _l(mLock); Mutex::Autolock _l(mLock); // free all buffers // free all buffers Loading
camera/device/default/ExternalCameraDeviceSession.h +2 −2 Original line number Original line Diff line number Diff line Loading @@ -240,9 +240,9 @@ class ExternalCameraDeviceSession : public BnCameraDeviceSession, public OutputT // To init/close different version of output thread // To init/close different version of output thread void initOutputThread(); void initOutputThread(); void closeOutputThread(); void closeOutputThread(); void closeOutputThreadImpl(); void closeBufferRequestThread(); void close(bool callerIsDtor); void closeImpl(); Status initStatus() const; Status initStatus() const; status_t initDefaultRequests(); status_t initDefaultRequests(); Loading