From: fred Date: Sun, 24 Mar 2002 19:59:45 +0000 (+0000) Subject: lilypond-0.1.56 X-Git-Tag: release/1.5.59~3767 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=d9bedfc028746d8131d3240600ac15b01dd086bd;p=lilypond.git lilypond-0.1.56 --- diff --git a/lily/engraver-group.cc b/lily/engraver-group.cc index a50b078062..29ce749fab 100644 --- a/lily/engraver-group.cc +++ b/lily/engraver-group.cc @@ -42,20 +42,30 @@ Engraver_group_engraver::do_announces() Request dummy_req; Link_array nongroups = nongroup_l_arr (); - for (int j =0; j < announce_info_arr_.size(); j++) + while (announce_info_arr_.size ()) { - Score_elem_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? + for (int j =0; j < announce_info_arr_.size(); j++) + { + Score_elem_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? + Engraver * eng = nongroups[i]->engraver_l (); + if (eng && eng!= info.origin_grav_l_arr_[0]) + eng->acknowledge_element (info); + } + } + announce_info_arr_.clear (); + for (int i=0; i < nongroups.size(); i++) + { Engraver * eng = nongroups[i]->engraver_l (); - if (eng && eng!= info.origin_grav_l_arr_[0]) - eng->acknowledge_element (info); + if (eng) + eng->process_acknowledged (); } + } - announce_info_arr_.clear(); } diff --git a/lily/include/engraver-group.hh b/lily/include/engraver-group.hh index 9f3dc8b78a..72f14f3c3c 100644 --- a/lily/include/engraver-group.hh +++ b/lily/include/engraver-group.hh @@ -22,7 +22,9 @@ Group a number of engravers. Usually delegates everything to its contents. Postfix: group */ -class Engraver_group_engraver : public Engraver, public virtual Translator_group { +class Engraver_group_engraver : public Engraver, + public virtual Translator_group +{ protected: Array announce_info_arr_; public: @@ -33,7 +35,7 @@ public: DECLARE_MY_RUNTIME_TYPEINFO; virtual Staff_info get_staff_info() const; - virtual void do_announces(); + virtual void do_announces(); virtual void announce_element (Score_elem_info); };