diff --git a/rfg_adc_plotter/gui/pyqtgraph_backend.py b/rfg_adc_plotter/gui/pyqtgraph_backend.py index e56b621..4ded1d2 100644 --- a/rfg_adc_plotter/gui/pyqtgraph_backend.py +++ b/rfg_adc_plotter/gui/pyqtgraph_backend.py @@ -1691,9 +1691,15 @@ def run_pyqtgraph(args) -> None: ) set_x_range_if_changed("line_x", p_line, f_min, f_max, padding=0) - distance_bounds = resolve_axis_bounds(runtime.ring.distance_axis) - if distance_bounds is not None: - display_axis_full = display_distance_axis_for_mode(runtime.ring.distance_axis, fft_mode) + # Use the SAME stable full-scale axis as the B-scan update block so both + # write identical bounds to the shared fft_waterfall cache. Using the + # per-frame runtime.ring.distance_axis here made the two thrash the cache + # and the B-scan y-axis jumped every frame. + bscan_axis = stable_full_scale_distance_axis() + if bscan_axis is None: + bscan_axis = runtime.ring.distance_axis + if bscan_axis is not None: + display_axis_full = display_distance_axis_for_mode(bscan_axis, fft_mode) display_bounds = resolve_axis_bounds(display_axis_full) if display_bounds is not None: d_min_display, d_max_display = display_bounds