This derives Bar_check_iterator from Music_iterator rather than from
Simple_music_iterator.
In
\score {
{ | d }
\midi { }
}
the bar check iterator is being called while only the \Global context
exists. That causes Score_performer::one_time_step to be called
without getting Score_performer::prepare to be called previously,
probably because the Score context is created at the wrong time. The
Score_performer is not prepared for this situation.
I have no idea how to fix Simple_music_iterator, why it exists in the
first place and is written like it is, and why this appears to work.
Check bar checks. We do this outside the engravers so that you can
race through the score using skipTypesetting to correct durations.
*/
-class Bar_check_iterator : Simple_music_iterator
+class Bar_check_iterator : Music_iterator
{
public:
virtual void process (Moment);
void
Bar_check_iterator::process (Moment m)
{
- Simple_music_iterator::process (m);
+ Music_iterator::process (m);
if (!m.to_bool ())
{
Context *tr = get_outlet ();