X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fpart-combine-iterator.cc;h=922016b15cae8336190f052490e25d3b63b70abc;hb=0b544cfb7332615ef809b71b57ab656741311ae1;hp=eb1cca43e57092ed886f3166c6ae739d97c03970;hpb=08560a1b8076630c4fc6cb9b902614d8b74fd6fc;p=lilypond.git diff --git a/lily/part-combine-iterator.cc b/lily/part-combine-iterator.cc index eb1cca43e5..922016b15c 100644 --- a/lily/part-combine-iterator.cc +++ b/lily/part-combine-iterator.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2004--2012 Han-Wen Nienhuys + Copyright (C) 2004--2014 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -158,19 +158,14 @@ Part_combine_iterator::derived_mark () const scm_gc_mark (first_iter_->self_scm ()); if (second_iter_) scm_gc_mark (second_iter_->self_scm ()); - - Stream_event *ptrs[] - = - { - unisono_event_, - mmrest_event_, - solo_two_event_, - solo_one_event_, - 0 - }; - for (int i = 0; ptrs[i]; i++) - if (ptrs[i]) - scm_gc_mark (ptrs[i]->self_scm ()); + if (unisono_event_) + scm_gc_mark (unisono_event_->self_scm ()); + if (mmrest_event_) + scm_gc_mark (mmrest_event_->self_scm ()); + if (solo_one_event_) + scm_gc_mark (solo_one_event_->self_scm ()); + if (solo_two_event_) + scm_gc_mark (solo_two_event_->self_scm ()); } void @@ -228,7 +223,9 @@ Part_combine_iterator::kill_mmrest (int in) if (!mmrest_event_) { - mmrest_event_ = new Stream_event (ly_symbol2scm ("multi-measure-rest-event")); + mmrest_event_ = new Stream_event + (scm_call_1 (ly_lily_module_constant ("ly:make-event-class"), + ly_symbol2scm ("multi-measure-rest-event"))); mmrest_event_->set_property ("duration", SCM_EOL); mmrest_event_->unprotect (); } @@ -261,7 +258,9 @@ Part_combine_iterator::unisono (bool silent) { if (!unisono_event_) { - unisono_event_ = new Stream_event (ly_symbol2scm ("unisono-event")); + unisono_event_ = new Stream_event + (scm_call_1 (ly_lily_module_constant ("ly:make-event-class"), + ly_symbol2scm ("unisono-event"))); unisono_event_->unprotect (); } @@ -291,7 +290,9 @@ Part_combine_iterator::solo1 () { if (!solo_one_event_) { - solo_one_event_ = new Stream_event (ly_symbol2scm ("solo-one-event")); + solo_one_event_ = new Stream_event + (scm_call_1 (ly_lily_module_constant ("ly:make-event-class"), + ly_symbol2scm ("solo-one-event"))); solo_one_event_->unprotect (); } @@ -316,7 +317,9 @@ Part_combine_iterator::solo2 () { if (!solo_two_event_) { - solo_two_event_ = new Stream_event (ly_symbol2scm ("solo-two-event")); + solo_two_event_ = new Stream_event + (scm_call_1 (ly_lily_module_constant ("ly:make-event-class"), + ly_symbol2scm ("solo-two-event"))); solo_two_event_->unprotect (); } @@ -404,6 +407,7 @@ Part_combine_iterator::construct_children () "DynamicLineSpanner", "Tie", "Dots", + "MultiMeasureRest", "Rest", "Slur", "TextScript", @@ -429,11 +433,6 @@ Part_combine_iterator::construct_children () ly_symbol2scm ("horizontal-shift"), horizontalShiftOne_); execute_pushpop_property (two, ly_symbol2scm ("NoteColumn"), ly_symbol2scm ("horizontal-shift"), horizontalShiftTwo_); - /* Also handle MultiMeasureRest positions for voice 1/2 */ - execute_pushpop_property (one, ly_symbol2scm ("MultiMeasureRest"), - ly_symbol2scm ("staff-position"), scm_from_int (4)); - execute_pushpop_property (two, ly_symbol2scm ("MultiMeasureRest"), - ly_symbol2scm ("staff-position"), scm_from_int (-4)); }