+{
+ if (!session) {
+ return;
+ }
+
+ compute_current_bbt_points (leftmost_frame, leftmost_frame + (nframes_t)(canvas_width * frames_per_unit)); // redraw rulers and measures
+
+ if (immediate_redraw) {
+
+ hide_measures ();
+
+ if (current_bbt_points) {
+ draw_measures ();
+ }
+
+ } else if (tempo_map_change_idle_handler_id < 0) {
+
+ tempo_map_change_idle_handler_id = Glib::signal_idle().connect (mem_fun (*this, &Editor::redraw_measures));
+
+ }
+
+ update_tempo_based_rulers ();
+}
+
+void
+Editor::compute_current_bbt_points (nframes_t leftmost, nframes_t rightmost)