X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fperformer-group-performer.cc;h=8952105656b8a8a759d7c5aecd5682fe92e5d60e;hb=4b40ecf0af9b4ff3fcf4287ae685ac1a9cc89523;hp=d594e49b92ef507d6132880beca84586c0635e88;hpb=a4d7106c75b325441063fd9ba9c4131979784aa5;p=lilypond.git diff --git a/lily/performer-group-performer.cc b/lily/performer-group-performer.cc index d594e49b92..8952105656 100644 --- a/lily/performer-group-performer.cc +++ b/lily/performer-group-performer.cc @@ -25,6 +25,35 @@ Performer_group_performer::announce_element (Audio_element_info info) +void +Performer_group_performer::create_grobs () +{ + for (SCM p = simple_trans_list_; gh_pair_p (p); p = gh_cdr ( p)) + { + Translator * t = unsmob_translator (gh_car (p)); + Performer * eng = dynamic_cast (t); + if (eng) + eng->create_grobs (); + } +} + +void +Performer_group_performer::acknowledge_grobs () +{ + for (int j =0; j < announce_info_arr_.size(); j++) + { + Audio_element_info info = announce_info_arr_[j]; + + for (SCM p = simple_trans_list_; gh_pair_p (p); p = gh_cdr (p)) + { + Translator * t = unsmob_translator (gh_car (p)); + Performer * eng = dynamic_cast (t); + if (eng && eng!= info.origin_trans_l_) + eng->acknowledge_grob (info); + } + } +} + void Performer_group_performer::do_announces() { @@ -33,41 +62,25 @@ Performer_group_performer::do_announces() Translator * t = unsmob_translator (gh_car (p)); dynamic_cast (t)->do_announces (); } + + create_grobs (); + // debug int i = 0; - do - { - i++; - for (int j =0; j < announce_info_arr_.size(); j++) - { - Audio_element_info info = announce_info_arr_[j]; - - if (i > 10) - { - printf ("elt: %s\n", - classname (announce_info_arr_[j].elem_l_)); - announce_info_arr_.clear (); - } - - for (SCM p = simple_trans_list_; gh_pair_p (p); p = gh_cdr (p)) - { - Translator * t = unsmob_translator (gh_car (p)); - Performer * eng = dynamic_cast (t); - if (eng && eng!= info.origin_trans_l_) - eng->acknowledge_element (info); - } - } + while (announce_info_arr_.size () && i++ < 5) + { + acknowledge_grobs (); + announce_info_arr_.clear (); + create_grobs (); + } + + if (announce_info_arr_.size ()) + { + printf ("do_announces: elt: %s\n", + classname (announce_info_arr_[0].elem_l_)); announce_info_arr_.clear (); - for (SCM p = simple_trans_list_; gh_pair_p (p); p = gh_cdr ( p)) - { - Translator * t = unsmob_translator (gh_car (p)); - Performer * eng = dynamic_cast (t); - if (eng) - eng->process_acknowledged (); - } } - while (announce_info_arr_.size ()); }