]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/phrasing-slur-engraver.cc
Introduce a maximum depth for markup evaluation
[lilypond.git] / lily / phrasing-slur-engraver.cc
index 4805960042b8317e1f45ba9ed86ab8598a5cba3b..6a1caedb01b124821534ccae8681049fc68510cd 100644 (file)
@@ -51,10 +51,11 @@ class Phrasing_slur_engraver : public Engraver
   vector<Stream_event *> stop_events_;
   vector<Grob *> slurs_;
   vector<Grob *> end_slurs_;
+  vector<Grob_info> objects_to_acknowledge_;
 
 protected:
   DECLARE_TRANSLATOR_LISTENER (phrasing_slur);
-  DECLARE_ACKNOWLEDGER (accidental);
+  DECLARE_ACKNOWLEDGER (inline_accidental);
   DECLARE_ACKNOWLEDGER (fingering);
   DECLARE_ACKNOWLEDGER (note_column);
   DECLARE_ACKNOWLEDGER (slur);
@@ -103,11 +104,11 @@ Phrasing_slur_engraver::acknowledge_note_column (Grob_info info)
 void
 Phrasing_slur_engraver::acknowledge_extra_object (Grob_info info)
 {
-  Slur::auxiliary_acknowledge_extra_object (info, slurs_, end_slurs_);
+  objects_to_acknowledge_.push_back (info);
 }
 
 void
-Phrasing_slur_engraver::acknowledge_accidental (Grob_info info)
+Phrasing_slur_engraver::acknowledge_inline_accidental (Grob_info info)
 {
   acknowledge_extra_object (info);
 }
@@ -209,12 +210,16 @@ Phrasing_slur_engraver::process_music ()
 void
 Phrasing_slur_engraver::stop_translation_timestep ()
 {
+  for (vsize i = 0; i < objects_to_acknowledge_.size (); i++)
+    Slur::auxiliary_acknowledge_extra_object (objects_to_acknowledge_[i], slurs_, end_slurs_);
+
   end_slurs_.clear ();
   start_events_.clear ();
   stop_events_.clear ();
+  objects_to_acknowledge_.clear ();
 }
 
-ADD_ACKNOWLEDGER (Phrasing_slur_engraver, accidental);
+ADD_ACKNOWLEDGER (Phrasing_slur_engraver, inline_accidental);
 ADD_ACKNOWLEDGER (Phrasing_slur_engraver, fingering)
 ADD_ACKNOWLEDGER (Phrasing_slur_engraver, note_column);
 ADD_ACKNOWLEDGER (Phrasing_slur_engraver, slur);