X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fscore-performer.cc;h=9c3b82267d882e1437168079c36969796bca0348;hb=47db9a3883d726ca53e2133a3b2298f78dd6a32e;hp=f47963f5e9ae43405dbb7b4ef4baf5fc92cf7113;hpb=f93e4199873c91ae32f0e84a610d14853dc379df;p=lilypond.git diff --git a/lily/score-performer.cc b/lily/score-performer.cc index f47963f5e9..9c3b82267d 100644 --- a/lily/score-performer.cc +++ b/lily/score-performer.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1996--2011 Jan Nieuwenhuizen + Copyright (C) 1996--2015 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -106,9 +106,9 @@ IMPLEMENT_LISTENER (Score_performer, prepare); void Score_performer::prepare (SCM sev) { - Stream_event *ev = unsmob_stream_event (sev); + Stream_event *ev = Stream_event::unsmob (sev); SCM sm = ev->get_property ("moment"); - Moment *m = unsmob_moment (sm); + Moment *m = Moment::unsmob (sm); audio_column_ = new Audio_column (*m); announce_element (Audio_element_info (audio_column_, 0)); precomputed_recurse_over_translators (context (), START_TRANSLATION_TIMESTEP, UP); @@ -131,6 +131,17 @@ IMPLEMENT_LISTENER (Score_performer, one_time_step); void Score_performer::one_time_step (SCM) { + // audio_column_ can be 0 when prepare has not been called. The + // condition is triggered when Simple_music_iterator implicitly + // creates a Score context, like when writing + // + // \score { { | c4 c c c } \midi { } } + // + // The same situation happens with the Score_engraver group, but it + // would appear not to suffer any bad side effects. + + if (!audio_column_) + audio_column_ = new Audio_column (context ()->now_mom ()); if (to_boolean (context ()->get_property ("skipTypesetting"))) { if (!skipping_) @@ -174,4 +185,3 @@ Score_performer::initialize () Translator_group::initialize (); } -