+2003-08-27 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+
+ * lily/tie-performer.cc (stop_translation_timestep): only flush
+ tied_notes when we have actually made a tie. Fixes bugs with ties
+ in polyphonic scores.
+
2003-08-26 Jan Nieuwenhuizen <janneke@gnu.org>
* stepmake/autogen.sh: Bugfix: copy aclocal.m4, autogen.sh also if
public:
TRANSLATOR_DECLARATIONS(Tie_performer);
private:
- bool done_;
-
+
+ bool ties_created_;
Array<CNote_melodic_tuple> now_notes_;
Array<CNote_melodic_tuple> tied_notes_;
Tie_performer::Tie_performer ()
{
event_ = 0;
- done_ = false;
+ ties_created_ = false;
}
ENTER_DESCRIPTION (Tie_performer, "", "",
p->set_note (RIGHT, now_notes_[j].note_);
ties_.push (p);
announce_element (Audio_element_info (p, event_));
+ ties_created_ = true;
tied_notes_.del (i);
break ;
void
Tie_performer::stop_translation_timestep ()
{
- if (prev_event_ && tied_notes_.size () && !ties_.size ())
+ if (prev_event_ && tied_notes_.size () && !ties_.size ()
+ && now_notes_.size ())
{
prev_event_->origin ()->warning (_ ("No ties were performed."));
}
- else
- prev_event_ = 0;
+
+ if (ties_created_)
+ {
+ prev_event_ = 0;
+ tied_notes_.clear();
+ }
if (event_)
{
tied_notes_ = now_notes_ ;
prev_event_ = event_;
}
- else
- {
- tied_notes_.clear ();
- }
event_ = 0;
now_notes_ .clear ();
Tie_performer::start_translation_timestep ()
{
event_ =0;
- done_ = false;
+ ties_created_ = false;
Moment now = now_mom ();
for (int i= tied_notes_.size (); i-- ;)
{