X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fauto-change-iterator.cc;h=7b73db03caea743a8bd1ee6af3a2921c119c4ca0;hb=61bba8a98a53e424054b26d63ead26b0696ea29d;hp=83c2f45fafd42715d4b6c9b7304bb4f4e18b37e5;hpb=b1323f33e9aa4b9eea05eefb8755c907d4d762d4;p=lilypond.git diff --git a/lily/auto-change-iterator.cc b/lily/auto-change-iterator.cc index 83c2f45faf..7b73db03ca 100644 --- a/lily/auto-change-iterator.cc +++ b/lily/auto-change-iterator.cc @@ -16,7 +16,7 @@ class Auto_change_iterator : public Music_wrapper_iterator { public: - DECLARE_SCHEME_CALLBACK(constructor, ()); + DECLARE_SCHEME_CALLBACK (constructor, ()); Auto_change_iterator (); @@ -28,6 +28,7 @@ private: SCM split_list_; Direction where_dir_; void change_to (Music_iterator* , SCM, String); + Moment start_moment_; }; @@ -52,10 +53,10 @@ Auto_change_iterator::change_to (Music_iterator *it, SCM to_type_sym, while (current && !current->is_alias (to_type_sym)) { last = current; - current = current->daddy_context_; + current = current->get_parent_context (); } - if (current && current->id_string_ == to_id) + if (current && current->id_string () == to_id) { String msg; msg += _ ("Can't switch translators, I'm there already"); @@ -90,13 +91,13 @@ Auto_change_iterator::process (Moment m) Moment now = get_outlet ()->now_mom (); Moment *splitm = 0; - for (; gh_pair_p (split_list_); split_list_ = gh_cdr (split_list_)) + for (; ly_c_pair_p (split_list_); split_list_ = ly_cdr (split_list_)) { - splitm = unsmob_moment (gh_caar (split_list_)); - if (*splitm > now) + splitm = unsmob_moment (ly_caar (split_list_)); + if ((*splitm + start_moment_) > now) break ; - SCM tag = gh_cdar (split_list_); + SCM tag = ly_cdar (split_list_); Direction d = to_dir (tag); if (d && d != where_dir_) @@ -121,6 +122,7 @@ Auto_change_iterator::construct_children () { Music_wrapper_iterator::construct_children (); split_list_ = get_music ()->get_property ("split-list"); + start_moment_ = get_outlet ()->now_mom (); } IMPLEMENT_CTOR_CALLBACK (Auto_change_iterator);