From 0626813c0bb491097af7b07e6ebe75a81abbd2b9 Mon Sep 17 00:00:00 2001 From: Bohdan Kmit Date: Sun, 13 Aug 2023 13:06:43 +0300 Subject: [PATCH] Fix markers drawing artifacts --- plot.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/plot.c b/plot.c index ec40adf..97e8c76 100644 --- a/plot.c +++ b/plot.c @@ -991,17 +991,26 @@ static const uint8_t marker_bitmap[]={ static void markmap_marker(int marker) { + static index_x_t prev_index_x[MARKERS_MAX]; + static index_y_t prev_index_y[MARKERS_MAX]; + if (!markers[marker].enabled) return; - if (IS_TRACE_DISABLE(TRACE_ACTUAL)) + if (IS_TRACE_DISABLE(markers[marker].trace)) return; #ifdef __MARKER_CACHE__ - marker_cache_valid[marker] = false; // force recalculation + marker_cache_valid[marker] = false; // force recalculation #endif int idx = markers[marker].index; int x = trace_index_x[idx] - X_MARKER_OFFSET; - int y = trace_index_y[TRACE_ACTUAL][idx] - Y_MARKER_OFFSET; + int y = trace_index_y[markers[marker].trace][idx] - Y_MARKER_OFFSET; invalidate_rect(x, y, x+MARKER_WIDTH-1, y+MARKER_HEIGHT-1); + invalidate_rect(prev_index_x[marker], + prev_index_y[marker], + prev_index_x[marker]+MARKER_WIDTH-1, + prev_index_y[marker]+MARKER_HEIGHT-1); + prev_index_x[marker] = x; + prev_index_y[marker] = y; } void