diff --git a/services/cameraservice/sourceservice/src/distributedcameramgr/dcameradata/dcamera_stream_data_process_producer.cpp b/services/cameraservice/sourceservice/src/distributedcameramgr/dcameradata/dcamera_stream_data_process_producer.cpp index 134dac4b6f9d3b45bd3a4481944b066f2f95d3a1..3e5a6837e05d47af0fce3d346413684005831cb8 100644 --- a/services/cameraservice/sourceservice/src/distributedcameramgr/dcameradata/dcamera_stream_data_process_producer.cpp +++ b/services/cameraservice/sourceservice/src/distributedcameramgr/dcameradata/dcamera_stream_data_process_producer.cpp @@ -37,8 +37,8 @@ DCameraStreamDataProcessProducer::DCameraStreamDataProcessProducer(std::string d DCameraStreamDataProcessProducer::~DCameraStreamDataProcessProducer() { - DHLOGI("DCameraStreamDataProcessProducer Destructor devId %s dhId %s state: %d streamType: %d", - GetAnonyString(devId_).c_str(), GetAnonyString(dhId_).c_str(), state_, streamType_); + DHLOGI("DCameraStreamDataProcessProducer Destructor devId %s dhId %s state: %d streamType: %d streamId: %d", + GetAnonyString(devId_).c_str(), GetAnonyString(dhId_).c_str(), state_, streamType_, streamId_); if (state_ == DCAMERA_PRODUCER_STATE_START) { Stop(); } @@ -65,7 +65,10 @@ void DCameraStreamDataProcessProducer::Stop() { DHLOGI("DCameraStreamDataProcessProducer Stop devId: %s dhId: %s streamType: %d streamId: %d state: %d", GetAnonyString(devId_).c_str(), GetAnonyString(dhId_).c_str(), streamType_, streamId_, state_); - state_ = DCAMERA_PRODUCER_STATE_STOP; + { + std::lock_guard lock(bufferMutex_); + state_ = DCAMERA_PRODUCER_STATE_STOP; + } producerCon_.notify_one(); producerThread_.join(); if (streamType_ == CONTINUOUS_FRAME) { @@ -79,8 +82,8 @@ void DCameraStreamDataProcessProducer::Stop() void DCameraStreamDataProcessProducer::FeedStream(const std::shared_ptr& buffer) { - DHLOGD("DCameraStreamDataProcessProducer FeedStream devId %s dhId %s streamType: %d streamSize: %d", - GetAnonyString(devId_).c_str(), GetAnonyString(dhId_).c_str(), streamType_, buffer->Size()); + DHLOGD("DCameraStreamDataProcessProducer FeedStream devId %s dhId %s streamId: %d streamType: %d streamSize: %d", + GetAnonyString(devId_).c_str(), GetAnonyString(dhId_).c_str(), streamId_, streamType_, buffer->Size()); std::unique_lock lock(bufferMutex_); if (buffers_.size() >= DCAMERA_PRODUCER_MAX_BUFFER_SIZE) { DHLOGD("DCameraStreamDataProcessProducer FeedStream OverSize devId %s dhId %s streamType: %d streamSize: %d", @@ -96,7 +99,10 @@ void DCameraStreamDataProcessProducer::FeedStream(const std::shared_ptr(runner); + { + std::lock_guard lock(eventMutex_); + eventHandler_ = std::make_shared(runner); + } eventCon_.notify_one(); runner->Run(); } @@ -123,13 +129,13 @@ void DCameraStreamDataProcessProducer::LooperContinue() buffer = buffers_.front(); if (buffers_.size() > 1) { buffers_.pop(); - DHLOGD("common devId %s dhId %s streamSize: %d bufferSize: %d streamType: %d", + DHLOGD("common devId %s dhId %s streamSize: %d bufferSize: %d streamType: %d streamId: %d", GetAnonyString(devId_).c_str(), GetAnonyString(dhId_).c_str(), buffer->Size(), buffers_.size(), - streamType_); + streamType_, streamId_); } else { - DHLOGD("repeat devId %s dhId %s streamSize: %d bufferSize: %d streamType: %d", + DHLOGD("repeat devId %s dhId %s streamSize: %d bufferSize: %d streamType: %d streamId: %d", GetAnonyString(devId_).c_str(), GetAnonyString(dhId_).c_str(), buffer->Size(), buffers_.size(), - streamType_); + streamType_, streamId_); } }