]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/chord-tremolo-iterator.cc
* VERSION (MY_PATCH_LEVEL): make 1.7.0
[lilypond.git] / lily / chord-tremolo-iterator.cc
index 7cec33c3026daaa5d33fbb5b0fd942e1a9291988..b4d769696810ee5258887f2396e5df0bab655855 100644 (file)
@@ -22,7 +22,7 @@ Chord_tremolo_iterator::construct_children ()
 {
   Repeated_music * rep = dynamic_cast<Repeated_music*> (get_music ());
   factor_  = Moment (Rational(1, 1));
-  child_iter_ = get_iterator (rep->body ());
+  child_iter_ = unsmob_iterator (get_iterator (rep->body ()));
 }
 
 Chord_tremolo_iterator::Chord_tremolo_iterator ()
@@ -35,7 +35,23 @@ Chord_tremolo_iterator::Chord_tremolo_iterator (Chord_tremolo_iterator const &sr
   : Music_iterator (src)
 {
   factor_ = src.factor_;
-  child_iter_ = src.child_iter_ ? src.child_iter_->clone () : 0; 
+  child_iter_ = src.child_iter_ ? src.child_iter_->clone () : 0;
+  if (child_iter_)
+    scm_gc_unprotect_object (child_iter_->self_scm());
+}
+
+void
+Chord_tremolo_iterator::do_quit()
+{
+  if (child_iter_)
+    child_iter_->quit();
+}
+
+void
+Chord_tremolo_iterator::derived_mark () const
+{
+  if (child_iter_)
+    scm_gc_mark (child_iter_->self_scm());
 }
 
 void
@@ -65,11 +81,6 @@ Chord_tremolo_iterator::ok () const
   return child_iter_ && child_iter_->ok ();
 }
 
-Chord_tremolo_iterator::~Chord_tremolo_iterator ()
-{
-  delete child_iter_;
-}
-
 Music_iterator*
 Chord_tremolo_iterator::try_music_in_children (Music  *m) const
 {