]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/repeat-engraver.cc
release: 1.1.57
[lilypond.git] / lily / repeat-engraver.cc
index 5864e065271cfdf3f771a81ac9fd955531eba090..5dd89eb2f56a620c2a953016a8860c751500fb03 100644 (file)
 
 ADD_THIS_TRANSLATOR (Repeat_engraver);
 
-/*
-  Needs redesign?
-
-  -  Logic needs to be moved out of do_try_music(),
-  
-  - don't  try to do multiple repeated music.  Lets assume repeats  don't nest.
-  
- */
 bool
 Repeat_engraver::do_try_music (Music* m)
 {
@@ -112,8 +104,13 @@ Repeat_engraver::queue_events ()
          else
            becel.append (new Bar_create_event (walk_mom, "stop"));
        }
-    } 
-  create_barmoments_queue_ = becel.head_ ;
+    }
+
+  Cons<Bar_create_event> *&tail = create_barmoments_queue_
+    ? last_cons (create_barmoments_queue_)->next_
+    : create_barmoments_queue_;
+
+  tail = becel.head_ ;
   becel.head_ = 0;
 }
 
@@ -137,7 +134,6 @@ Repeat_engraver::do_process_requests ()
   /*
     Do all the events that need to be done now.
   */
-  bool stop = false;
   while (head && now_mom () == head->car_->when_)
     {
       create_barmoments_queue_ = create_barmoments_queue_->next_;
@@ -155,6 +151,8 @@ Repeat_engraver::do_process_requests ()
 
              if (t != "stop")
                bar_engraver_l->request_bar (t);
+             else
+               bar_engraver_l->request_bar (""); 
            }
          else
            {