@@ -324,7 +324,7 @@ void LogEngine::ShowHideSignal(const SignalCategory& vCategory, const SignalName
324
324
}
325
325
}
326
326
327
- void LogEngine::ShowHideSignal (const SignalCategory& vCategory, const SignalName& vName, const bool & vFlag) {
327
+ void LogEngine::ShowHideSignal (const SignalCategory& vCategory, const SignalName& vName, const bool vFlag) {
328
328
if (m_SignalSeries.find (vCategory) != m_SignalSeries.end ()) {
329
329
auto & cat = m_SignalSeries.at (vCategory);
330
330
if (cat.find (vName) != cat.end ()) {
@@ -387,35 +387,45 @@ SignalSeriesContainerRef LogEngine::GetSignalSeries() {
387
387
return m_SignalSeries;
388
388
}
389
389
390
- void LogEngine::SetHoveredTime (const SignalEpochTime& vHoveredTime) {
391
- m_HoveredTime = vHoveredTime;
392
- ProjectFile::Instance ()->SetProjectChange ();
393
- m_PreviewTicks.clear ();
394
- m_PreviewTicks.reserve (m_SignalsCount);
395
- size_t visible_idx = 0U ;
396
- for (auto & item_cat : m_SignalSeries) {
397
- for (auto & item_name : item_cat.second ) {
398
- if (item_name.second ) {
399
- if (ProjectFile::Instance ()->m_ShowVariableSignalsInHoveredListView && item_name.second ->isConstant ()) {
400
- continue ;
401
- }
402
- SignalTickPtr last_ptr = nullptr ;
403
- for (const auto & tick_weak : item_name.second ->datas_values ) {
404
- auto ptr = tick_weak.lock ();
405
- if (last_ptr && vHoveredTime >= last_ptr->time_epoch && ptr && vHoveredTime <= ptr->time_epoch ) {
406
- m_PreviewTicks.push_back (last_ptr);
407
- if (ProjectFile::Instance ()->m_AutoColorize ) {
408
- auto parent_ptr = last_ptr->parent .lock ();
409
- if (parent_ptr && parent_ptr->show ) {
410
- parent_ptr->color_u32 = ImGui::GetColorU32 (GraphView::GetRainBow ((int32_t )visible_idx, m_VisibleCount));
411
- parent_ptr->color_v4 = ImGui::ColorConvertU32ToFloat4 (parent_ptr->color_u32 );
412
-
413
- ++visible_idx;
390
+ void LogEngine::SetHoveredTime (const SignalEpochTime& vHoveredTime, const bool vForce) {
391
+ if (vForce || m_HoveredTime != vHoveredTime) {
392
+ m_HoveredTime = vHoveredTime;
393
+ ProjectFile::Instance ()->SetProjectChange ();
394
+ auto last_previewed_ticks = m_PreviewTicks;
395
+ m_PreviewTicks.clear ();
396
+ m_PreviewTicks.reserve (m_SignalsCount);
397
+ size_t visible_idx = 0U ;
398
+ for (auto & item_cat : m_SignalSeries) {
399
+ for (auto & item_name : item_cat.second ) {
400
+ if (item_name.second ) {
401
+ if (ProjectFile::Instance ()->m_ShowVariableSignalsInHoveredListView && item_name.second ->isConstant ()) {
402
+ continue ;
403
+ }
404
+ SignalTickPtr last_ptr = nullptr ;
405
+ for (const auto & tick_weak : item_name.second ->datas_values ) {
406
+ auto ptr = tick_weak.lock ();
407
+ if (last_ptr && vHoveredTime >= last_ptr->time_epoch && ptr != nullptr && vHoveredTime <= ptr->time_epoch ) {
408
+ if (m_PreviewTicks.tryAdd (item_name.second ->name , last_ptr)) {
409
+ if (ProjectFile::Instance ()->m_AutoColorize ) {
410
+ auto parent_ptr = last_ptr->parent .lock ();
411
+ if (parent_ptr && parent_ptr->show ) {
412
+ parent_ptr->color_u32 = ImGui::GetColorU32 (GraphView::GetRainBow ((int32_t )visible_idx, m_VisibleCount));
413
+ parent_ptr->color_v4 = ImGui::ColorConvertU32ToFloat4 (parent_ptr->color_u32 );
414
+
415
+ ++visible_idx;
416
+ }
417
+ }
418
+ if (last_previewed_ticks.exist (item_name.second ->name )) {
419
+ auto last_previewed_tick_ptr = last_previewed_ticks.value (item_name.second ->name ).lock ();
420
+ if (last_previewed_tick_ptr != nullptr ) {
421
+ last_ptr->just_changed = ez::isDifferent (last_previewed_tick_ptr->value , last_ptr->value );
422
+ }
423
+ }
414
424
}
425
+ break ;
415
426
}
416
- break ;
427
+ last_ptr = ptr ;
417
428
}
418
- last_ptr = ptr;
419
429
}
420
430
}
421
431
}
@@ -452,7 +462,7 @@ void LogEngine::UpdateVisibleSignalsColoring() {
452
462
}
453
463
}
454
464
455
- SignalTicksWeakContainerRef LogEngine::GetPreviewTicks () {
465
+ SignalTicksWeakPreviewContainerRef LogEngine::GetPreviewTicks () {
456
466
return m_PreviewTicks;
457
467
}
458
468
0 commit comments