diff --git a/SConstruct b/SConstruct index 17d7975e47..f20ee17848 100644 --- a/SConstruct +++ b/SConstruct @@ -175,7 +175,7 @@ env = Environment( CCFLAGS=[ "-g", "-fPIC", - "-O2", + "-O0", #"-Wunused", "-Werror", "-Wshadow", diff --git a/tools/cabana/tools/search.cc b/tools/cabana/tools/search.cc index d88266fe4d..ed3ad0a12d 100644 --- a/tools/cabana/tools/search.cc +++ b/tools/cabana/tools/search.cc @@ -83,7 +83,7 @@ SearchDlg::SearchDlg(QWidget *parent) : QDialog(parent) { data_table = new QTableWidget(); data_table->setRowCount(1); - data_table->setColumnCount(3); + data_table->setColumnCount(6); search_results_layout->addWidget(data_table); diff --git a/tools/cabana/videowidget.cc b/tools/cabana/videowidget.cc index 0e9714994e..36880f5e56 100644 --- a/tools/cabana/videowidget.cc +++ b/tools/cabana/videowidget.cc @@ -188,15 +188,36 @@ void Slider::sliderChange(QAbstractSlider::SliderChange change) { } } +bool sortTimelineBasedOnEventPriority(std::tuple left, std::tuple right){ + std::map timelinePriority = { + { TimelineType::None, 0 }, + { TimelineType::Engaged, 10 }, + { TimelineType::AlertInfo, 20 }, + { TimelineType::AlertWarning, 30 }, + { TimelineType::AlertCritical, 40 }, + { TimelineType::UserFlag, 35 } + }; + + return timelinePriority[std::get<2>(left)] < timelinePriority[std::get<2>(right)]; +} + void Slider::paintEvent(QPaintEvent *ev) { QPainter p(this); QRect r = rect().adjusted(0, 4, 0, -4); p.fillRect(r, timeline_colors[(int)TimelineType::None]); double min = minimum() / 1000.0; double max = maximum() / 1000.0; - for (auto [begin, end, type] : timeline) { - if (begin > max || end < min) + + std::vector> sortedTimeline; + + std::copy(timeline.begin(), timeline.end(), std::back_inserter(sortedTimeline)); + + std::sort(sortedTimeline.begin(), sortedTimeline.end(), sortTimelineBasedOnEventPriority); + + for (auto [begin, end, type] : sortedTimeline) { + if (begin > max || end < min) continue; + r.setLeft(((std::max(min, (double)begin) - min) / (max - min)) * width()); r.setRight(((std::min(max, (double)end) - min) / (max - min)) * width()); p.fillRect(r, timeline_colors[(int)type]);