cabana: delay starting live streaming thread (#27213)

pull/26902/head^2
Dean Lee 2 years ago committed by GitHub
parent 784bef20ce
commit 2cb0f59962
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 7
      tools/cabana/streams/livestream.cc

@ -8,7 +8,7 @@ LiveStream::LiveStream(QObject *parent, QString address) : zmq_address(address),
stream_thread = new QThread(this); stream_thread = new QThread(this);
QObject::connect(stream_thread, &QThread::started, [=]() { streamThread(); }); QObject::connect(stream_thread, &QThread::started, [=]() { streamThread(); });
QObject::connect(stream_thread, &QThread::finished, stream_thread, &QThread::deleteLater); QObject::connect(stream_thread, &QThread::finished, stream_thread, &QThread::deleteLater);
stream_thread->start(); QTimer::singleShot(0, [this]() { stream_thread->start(); });
} }
LiveStream::~LiveStream() { LiveStream::~LiveStream() {
@ -45,9 +45,6 @@ void LiveStream::streamThread() {
} }
void LiveStream::handleEvent(Event *evt) { void LiveStream::handleEvent(Event *evt) {
std::lock_guard lk(lock);
can_events.push_back(evt);
current_ts = evt->mono_time; current_ts = evt->mono_time;
if (start_ts == 0 || current_ts < start_ts) { if (start_ts == 0 || current_ts < start_ts) {
if (current_ts < start_ts) { if (current_ts < start_ts) {
@ -57,6 +54,8 @@ void LiveStream::handleEvent(Event *evt) {
emit streamStarted(); emit streamStarted();
} }
std::lock_guard lk(lock);
can_events.push_back(evt);
if (!pause_) { if (!pause_) {
if (speed_ < 1 && last_update_ts > 0) { if (speed_ < 1 && last_update_ts > 0) {
auto it = std::upper_bound(can_events.begin(), can_events.end(), last_update_event_ts, [](uint64_t ts, auto &e) { auto it = std::upper_bound(can_events.begin(), can_events.end(), last_update_event_ts, [](uint64_t ts, auto &e) {

Loading…
Cancel
Save