Loading services/camera/libcameraservice/api1/Camera2Client.cpp +2 −0 Original line number Diff line number Diff line Loading @@ -935,6 +935,7 @@ status_t Camera2Client::startPreviewL(Parameters ¶ms, bool restart) { return res; } mCallbackProcessor->unpauseCallback(); params.state = Parameters::PREVIEW; return OK; } Loading Loading @@ -969,6 +970,7 @@ void Camera2Client::stopPreviewL() { FALLTHROUGH_INTENDED; case Parameters::RECORD: case Parameters::PREVIEW: mCallbackProcessor->pauseCallback(); syncWithDevice(); // Due to flush a camera device sync is not a sufficient // guarantee that the current client parameters are Loading services/camera/libcameraservice/api1/client2/CallbackProcessor.cpp +10 −1 Original line number Diff line number Diff line Loading @@ -39,6 +39,7 @@ CallbackProcessor::CallbackProcessor(sp<Camera2Client> client): mDevice(client->getCameraDevice()), mId(client->getCameraId()), mCallbackAvailable(false), mCallbackPaused(true), mCallbackToApp(false), mCallbackStreamId(NO_STREAM) { } Loading Loading @@ -216,6 +217,14 @@ int CallbackProcessor::getStreamId() const { return mCallbackStreamId; } void CallbackProcessor::unpauseCallback() { mCallbackPaused = false; } void CallbackProcessor::pauseCallback() { mCallbackPaused = true; } void CallbackProcessor::dump(int /*fd*/, const Vector<String16>& /*args*/) const { } Loading @@ -234,7 +243,7 @@ bool CallbackProcessor::threadLoop() { do { sp<Camera2Client> client = mClient.promote(); if (client == 0) { if (client == 0 || mCallbackPaused) { res = discardNewCallback(); } else { res = processNewCallback(client); Loading services/camera/libcameraservice/api1/client2/CallbackProcessor.h +7 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,8 @@ #ifndef ANDROID_SERVERS_CAMERA_CAMERA2_CALLBACKPROCESSOR_H #define ANDROID_SERVERS_CAMERA_CAMERA2_CALLBACKPROCESSOR_H #include <atomic> #include <utils/Thread.h> #include <utils/String16.h> #include <utils/Vector.h> Loading Loading @@ -52,6 +54,9 @@ class CallbackProcessor: status_t deleteStream(); int getStreamId() const; void unpauseCallback(); void pauseCallback(); void dump(int fd, const Vector<String16>& args) const; private: static const nsecs_t kWaitDuration = 10000000; // 10 ms Loading @@ -67,6 +72,8 @@ class CallbackProcessor: NO_STREAM = -1 }; std::atomic<bool> mCallbackPaused; // True if mCallbackWindow is a remote consumer, false if just the local // mCallbackConsumer bool mCallbackToApp; Loading Loading
services/camera/libcameraservice/api1/Camera2Client.cpp +2 −0 Original line number Diff line number Diff line Loading @@ -935,6 +935,7 @@ status_t Camera2Client::startPreviewL(Parameters ¶ms, bool restart) { return res; } mCallbackProcessor->unpauseCallback(); params.state = Parameters::PREVIEW; return OK; } Loading Loading @@ -969,6 +970,7 @@ void Camera2Client::stopPreviewL() { FALLTHROUGH_INTENDED; case Parameters::RECORD: case Parameters::PREVIEW: mCallbackProcessor->pauseCallback(); syncWithDevice(); // Due to flush a camera device sync is not a sufficient // guarantee that the current client parameters are Loading
services/camera/libcameraservice/api1/client2/CallbackProcessor.cpp +10 −1 Original line number Diff line number Diff line Loading @@ -39,6 +39,7 @@ CallbackProcessor::CallbackProcessor(sp<Camera2Client> client): mDevice(client->getCameraDevice()), mId(client->getCameraId()), mCallbackAvailable(false), mCallbackPaused(true), mCallbackToApp(false), mCallbackStreamId(NO_STREAM) { } Loading Loading @@ -216,6 +217,14 @@ int CallbackProcessor::getStreamId() const { return mCallbackStreamId; } void CallbackProcessor::unpauseCallback() { mCallbackPaused = false; } void CallbackProcessor::pauseCallback() { mCallbackPaused = true; } void CallbackProcessor::dump(int /*fd*/, const Vector<String16>& /*args*/) const { } Loading @@ -234,7 +243,7 @@ bool CallbackProcessor::threadLoop() { do { sp<Camera2Client> client = mClient.promote(); if (client == 0) { if (client == 0 || mCallbackPaused) { res = discardNewCallback(); } else { res = processNewCallback(client); Loading
services/camera/libcameraservice/api1/client2/CallbackProcessor.h +7 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,8 @@ #ifndef ANDROID_SERVERS_CAMERA_CAMERA2_CALLBACKPROCESSOR_H #define ANDROID_SERVERS_CAMERA_CAMERA2_CALLBACKPROCESSOR_H #include <atomic> #include <utils/Thread.h> #include <utils/String16.h> #include <utils/Vector.h> Loading Loading @@ -52,6 +54,9 @@ class CallbackProcessor: status_t deleteStream(); int getStreamId() const; void unpauseCallback(); void pauseCallback(); void dump(int fd, const Vector<String16>& args) const; private: static const nsecs_t kWaitDuration = 10000000; // 10 ms Loading @@ -67,6 +72,8 @@ class CallbackProcessor: NO_STREAM = -1 }; std::atomic<bool> mCallbackPaused; // True if mCallbackWindow is a remote consumer, false if just the local // mCallbackConsumer bool mCallbackToApp; Loading