    double max_sec = 0;
    int slider_x = -1;
    std::vector<std::tuple<int, int, TimelineType>> timeline;
    std::mutex thumbnail_lock;
    std::atomic<bool> abort_load_thumbnail = false;
    QMap<uint64_t, QPixmap> thumbnails;
    std::map<uint64_t, AlertInfo> alerts;
    QFuture<void> thumnail_future;
    InfoLabel thumbnail_label;
    friend class VideoWidget;
 
</s> remove   QFuture<void> thumnail_future;
 </s> add   std::unique_ptr<QFuture<void>> qlog_future; </s> remove   void loadThumbnails();
 </s> add   void parseQLog(); </s> remove   abort_load_thumbnail = true;
  thumnail_future.waitForFinished();
 </s> add   abort_parse_qlog = true;
  if (qlog_future) {
    qlog_future->waitForFinished();
  } </s> remove void Slider::loadThumbnails() {
 </s> add void Slider::parseQLog() { </s> remove   double max_time = 0;
  for (auto it = segments.rbegin(); it != segments.rend() && !abort_load_thumbnail; ++it) {
 </s> add   for (auto it = segments.rbegin(); it != segments.rend() && !abort_parse_qlog; ++it) {
  std::atomic<bool> abort_parse_qlog = false;
    double max_sec = 0;
    int slider_x = -1;
    std::vector<std::tuple<int, int, TimelineType>> timeline;
    std::mutex thumbnail_lock;
  std::atomic<bool> abort_parse_qlog = false;
    QMap<uint64_t, QPixmap> thumbnails;
    std::map<uint64_t, AlertInfo> alerts;
    QFuture<void> thumnail_future;
    InfoLabel thumbnail_label;
    friend class VideoWidget;
keep keep keep keep replace keep keep keep keep keep
 cabana: fix seeking issue (#28346)

* fix seekto

* rename loadThumbnail to parseQLog 
tools/cabana/videowidget.h