X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;ds=sidebyside;f=lily%2Fperformer-group-performer.cc;h=b0278c661d17cc955ba55c49574200fd703acc72;hb=875cf3061b68867a109cdaf52c93be868a3e01be;hp=a7d10c7c3aa7dae728aa119b1a2a54766c481b1b;hpb=8aad615ea7bb31f49a0c2afc21eea5ff5de20437;p=lilypond.git diff --git a/lily/performer-group-performer.cc b/lily/performer-group-performer.cc index a7d10c7c3a..b0278c661d 100644 --- a/lily/performer-group-performer.cc +++ b/lily/performer-group-performer.cc @@ -14,3 +14,56 @@ ADD_THIS_TRANSLATOR(Performer_group_performer); + +void +Performer_group_performer::announce_element (Audio_element_info info) +{ + announce_info_arr_.push (info); + Performer::announce_element (info); +} + +void +Performer_group_performer::do_announces() +{ + Link_array groups = group_l_arr (); + for (int i=0; i < groups.size(); i++) + { + Performer_group_performer * group = dynamic_cast (groups[i]); + if (group) + { + group->do_announces(); + } + } + + Request dummy_req; + + Link_array nongroups = nongroup_l_arr (); + while (announce_info_arr_.size ()) + { + for (int j =0; j < announce_info_arr_.size(); j++) + { + Audio_element_info info = announce_info_arr_[j]; + + if (!info.req_l_) + info.req_l_ = &dummy_req; + for (int i=0; i < nongroups.size(); i++) + { // Is this good enough? + Performer * eng = dynamic_cast (nongroups[i]); + // urg, huh? core dump? + //if (eng && eng!= info.origin_trans_l_arr_[0]) + if (eng && info.origin_trans_l_arr_.size () + && eng!= info.origin_trans_l_arr_[0]) + eng->acknowledge_element (info); + } + } + announce_info_arr_.clear (); + for (int i=0; i < nongroups.size(); i++) + { + Performer * eng = dynamic_cast (nongroups[i]); + if (eng) + eng->process_acknowledged (); + } + + } +} +