melisma_playing_req = new Melisma_playing_req;
melisma_stop_req = new Melisma_req;
melisma_start_req = new Melisma_req;
+ melisma_start_req->set_span_dir (START);
+ melisma_stop_req->set_span_dir (STOP);
}
- melisma_start_req->set_span_dir (START);
- melisma_stop_req->set_span_dir (STOP);
- music_iter_p_ =0;
- lyric_iter_p_ =0;
+ music_iter_ =0;
+ lyric_iter_ =0;
}
Moment
Lyric_combine_music_iterator::pending_moment () const
{
- Moment musnext = music_iter_p_->pending_moment ();
+ Moment musnext = music_iter_->pending_moment ();
return musnext;
}
bool
Lyric_combine_music_iterator::ok () const
{
- return music_iter_p_->ok ();
+ return music_iter_->ok ();
}
+void
+Lyric_combine_music_iterator::derived_mark()const
+{
+ if (music_iter_)
+ scm_gc_mark (music_iter_->self_scm());
+ if (lyric_iter_)
+ scm_gc_mark (lyric_iter_->self_scm());
+}
void
Lyric_combine_music_iterator::construct_children ()
{
- Lyric_combine_music const * m = dynamic_cast<Lyric_combine_music const*> (music_l ());
+ Lyric_combine_music const * m = dynamic_cast<Lyric_combine_music const*> (get_music ());
- music_iter_p_ = get_iterator_p (m->music_l ());
- lyric_iter_p_ = get_iterator_p (m->lyrics_l ());
+ music_iter_ = unsmob_iterator (get_iterator (m->get_music ()));
+ lyric_iter_ = unsmob_iterator (get_iterator (m->get_lyrics ()));
}
bool
if (try_music (busy_req))
return true;
- Translator_group * tr = music_iter_p_->report_to_l ();
+ Translator_group * tr = music_iter_->report_to ();
SCM grobs = tr->get_property ("busyGrobs");
Moment now = tr->now_mom();
void
Lyric_combine_music_iterator::process (Moment m)
{
- Moment my_next = music_iter_p_->pending_moment ();
+ Moment my_next = music_iter_->pending_moment ();
if (my_next > m)
return;
- music_iter_p_->process (m);
+ music_iter_->process (m);
- if ( get_busy_status ())
+ if (get_busy_status ())
{
bool melisma_b = try_music (melisma_playing_req);
if (!melisma_b)
{
- if (lyric_iter_p_->ok ())
+ if (lyric_iter_->ok ())
{
- // FIXME
-#if 0 // devise a new way for this
- if (melisma_b && !melisma_started_b_)
- lyric_iter_p_->try_music (melisma_start_req);
- else if (melisma_started_b_)
- lyric_iter_p_->try_music (melisma_stop_req);
-#endif
-
- Moment m= lyric_iter_p_->pending_moment ();
- lyric_iter_p_->process (m);
+ Moment m= lyric_iter_->pending_moment ();
+ lyric_iter_->process (m);
}
}
}
}
-
-Lyric_combine_music_iterator::~Lyric_combine_music_iterator ()
+void
+Lyric_combine_music_iterator::do_quit ()
{
- delete lyric_iter_p_;
- delete music_iter_p_;
+ if (music_iter_)
+ music_iter_->quit();
+ if (lyric_iter_)
+ lyric_iter_->quit();
+
}
-
Lyric_combine_music_iterator::Lyric_combine_music_iterator (Lyric_combine_music_iterator const & src)
: Music_iterator (src)
{
- lyric_iter_p_ = src.lyric_iter_p_ ? src.lyric_iter_p_->clone () : 0;
- music_iter_p_ = src.music_iter_p_ ? src.music_iter_p_->clone () : 0;
+ lyric_iter_ = src.lyric_iter_ ? src.lyric_iter_->clone () : 0;
+ music_iter_ = src.music_iter_ ? src.music_iter_->clone () : 0;
+
+ if (lyric_iter_)
+ scm_gc_unprotect_object (lyric_iter_->self_scm());
+ if (music_iter_)
+ scm_gc_unprotect_object (music_iter_->self_scm());
}
Music_iterator*
Lyric_combine_music_iterator::try_music_in_children (Music *m) const
{
- Music_iterator * i = music_iter_p_->try_music (m);
+ Music_iterator * i = music_iter_->try_music (m);
if (i)
return i;
else
- return lyric_iter_p_->try_music (m);
+ return lyric_iter_->try_music (m);
}