From: Reinhold Kainhofer Date: Wed, 17 Feb 2010 13:44:19 +0000 (+0100) Subject: FiguredBass: No need to store rest event, use bool instead X-Git-Tag: release/2.13.14-1~28 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=be06b52ffa5b1935950743b80e237908cf604f44;p=lilypond.git FiguredBass: No need to store rest event, use bool instead --- diff --git a/lily/figured-bass-engraver.cc b/lily/figured-bass-engraver.cc index d2237e3af2..ea1e979ab3 100644 --- a/lily/figured-bass-engraver.cc +++ b/lily/figured-bass-engraver.cc @@ -110,7 +110,7 @@ protected: bool new_event_found_; Moment stop_moment_; - Stream_event *rest_event_; + bool have_rest_; DECLARE_TRANSLATOR_LISTENER (rest); DECLARE_TRANSLATOR_LISTENER (bass_figure); @@ -151,7 +151,7 @@ Figured_bass_engraver::Figured_bass_engraver () { alignment_ = 0; continuation_ = false; - rest_event_ = 0; + have_rest_ = 0; new_event_found_ = false; } @@ -162,7 +162,7 @@ Figured_bass_engraver::start_translation_timestep () || now_mom ().grace_part_ < Rational (0)) return ; - rest_event_ = 0; + have_rest_ = 0; new_events_.clear (); for (vsize i = 0; i < groups_.size (); i++) groups_[i].current_event_ = 0; @@ -176,16 +176,7 @@ IMPLEMENT_TRANSLATOR_LISTENER (Figured_bass_engraver, rest); void Figured_bass_engraver::listen_rest (Stream_event *ev) { - if (to_boolean (get_property ("ignoreFiguredBassRest"))) - { - new_event_found_ = true; - - /* - No ASSIGN_EVENT_ONCE () ; otherwise we get warnings about - polyphonic rests. - */ - rest_event_ = ev; - } + have_rest_ = true; } IMPLEMENT_TRANSLATOR_LISTENER (Figured_bass_engraver, bass_figure); @@ -327,15 +318,10 @@ Figured_bass_engraver::process_music () if (alignment_ && !use_extenders) clear_spanners (); - if (rest_event_) - { - clear_spanners (); - groups_.clear (); - return; - } - - if (!continuation_ - && new_events_.empty ()) + // If we have a rest, or we have no new or continued events, clear all spanners + bool ignore_rest = to_boolean (get_property ("ignoreFiguredBassRest")); + if ((ignore_rest && have_rest_) || + (!continuation_ && new_events_.empty ())) { clear_spanners (); groups_.clear ();