From 924ed1acc5ac0280deae9c0a66808127b2e68d81 Mon Sep 17 00:00:00 2001 From: Nicolas Pope <nwpope@utu.fi> Date: Fri, 9 Aug 2019 11:18:36 +0300 Subject: [PATCH] Further protect swap operation --- components/rgbd-sources/src/streamer.cpp | 41 ++++++++++++------------ 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/components/rgbd-sources/src/streamer.cpp b/components/rgbd-sources/src/streamer.cpp index 740ea5e25..71c17ac04 100644 --- a/components/rgbd-sources/src/streamer.cpp +++ b/components/rgbd-sources/src/streamer.cpp @@ -263,30 +263,31 @@ void Streamer::run(bool block) { void Streamer::_swap(StreamSource *src) { if (src->jobs == 0) { UNIQUE_LOCK(src->mutex,lk); - - for (unsigned int b=0; b<10; ++b) { - auto i = src->clients[b].begin(); - while (i != src->clients[b].end()) { - // Client request completed so remove from list - if ((*i).txcount >= (*i).txmax) { - LOG(INFO) << "Remove client: " << (*i).uri; - i = src->clients[b].erase(i); - --src->clientCount; - } else { - i++; + if (src->jobs == 0) { + for (unsigned int b=0; b<10; ++b) { + auto i = src->clients[b].begin(); + while (i != src->clients[b].end()) { + // Client request completed so remove from list + if ((*i).txcount >= (*i).txmax) { + LOG(INFO) << "Remove client: " << (*i).uri; + i = src->clients[b].erase(i); + --src->clientCount; + } else { + i++; + } } } - } - src->src->swap(); - src->src->getFrames(src->rgb, src->depth); + src->src->swap(); + src->src->getFrames(src->rgb, src->depth); - //if (!src->rgb.empty() && src->prev_depth.empty()) { - //src->prev_depth = cv::Mat(src->rgb.size(), CV_16UC1, cv::Scalar(0)); - //LOG(INFO) << "Creating prevdepth: " << src->rgb.cols << "," << src->rgb.rows; - //} - src->jobs = 0; - src->frame++; + //if (!src->rgb.empty() && src->prev_depth.empty()) { + //src->prev_depth = cv::Mat(src->rgb.size(), CV_16UC1, cv::Scalar(0)); + //LOG(INFO) << "Creating prevdepth: " << src->rgb.cols << "," << src->rgb.rows; + //} + src->jobs = -1; + src->frame++; + } } } -- GitLab