X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fperformer-group-performer.cc;h=b8f4349ef8df3b374625b587d4e3ad3862592323;hb=d02e96479e11bc7e3714ab92a460a08d8a68f54f;hp=d594e49b92ef507d6132880beca84586c0635e88;hpb=a4d7106c75b325441063fd9ba9c4131979784aa5;p=lilypond.git diff --git a/lily/performer-group-performer.cc b/lily/performer-group-performer.cc index d594e49b92..b8f4349ef8 100644 --- a/lily/performer-group-performer.cc +++ b/lily/performer-group-performer.cc @@ -3,75 +3,91 @@ source file of the GNU LilyPond music typesetter - (c) 1996--2000 Han-Wen Nienhuys + (c) 1996--2003 Han-Wen Nienhuys Jan Nieuwenhuizen */ #include "performer-group-performer.hh" #include "audio-element.hh" -#include "debug.hh" +#include "warn.hh" -ADD_THIS_TRANSLATOR(Performer_group_performer); +ENTER_DESCRIPTION(Performer_group_performer, +/* descr */ "", +/* creats*/ "", +/* accepts */ "", +/* acks */ "", +/* reads */ "", +/* write */ ""); + void Performer_group_performer::announce_element (Audio_element_info info) { - announce_info_arr_.push (info); + announce_infos_.push (info); Performer::announce_element (info); } void -Performer_group_performer::do_announces() +Performer_group_performer::create_audio_elements () { - for (SCM p = trans_group_list_; gh_pair_p (p); p =gh_cdr ( p)) + for (SCM p = simple_trans_list_; gh_pair_p (p); p = ly_cdr (p)) { - Translator * t = unsmob_translator (gh_car (p)); - dynamic_cast (t)->do_announces (); + Translator * t = unsmob_translator (ly_car (p)); + Performer * eng = dynamic_cast (t); + if (eng) + eng->create_audio_elements (); } - - // 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); - } - } - announce_info_arr_.clear (); - for (SCM p = simple_trans_list_; gh_pair_p (p); p = gh_cdr ( p)) +} + +void +Performer_group_performer::acknowledge_audio_elements () +{ + for (int j =0; j < announce_infos_.size (); j++) + { + Audio_element_info info = announce_infos_[j]; + + for (SCM p = simple_trans_list_; gh_pair_p (p); p = ly_cdr (p)) { - Translator * t = unsmob_translator (gh_car (p)); + Translator * t = unsmob_translator (ly_car (p)); Performer * eng = dynamic_cast (t); - if (eng) - eng->process_acknowledged (); + if (eng && eng!= info.origin_trans_) + eng->acknowledge_audio_element (info); } } - while (announce_info_arr_.size ()); } +void +Performer_group_performer::do_announces () +{ + for (SCM p = trans_group_list_; gh_pair_p (p); p =ly_cdr (p)) + { + Translator * t = unsmob_translator (ly_car (p)); + dynamic_cast (t)->do_announces (); + } + + create_audio_elements (); + + while (announce_infos_.size ()) + { + acknowledge_audio_elements (); + announce_infos_.clear (); + create_audio_elements (); + } + if (announce_infos_.size ()) + { +#if 0 //printf? -> include + printf ("do_announces: elt: %s\n", + classname (announce_infos_[0].elem_)); +#endif + announce_infos_.clear (); + } +} - - +Performer_group_performer::Performer_group_performer(){}