pscore_ = 0;
}
+void
+Score_engraver::derived_mark () const
+{
+ if (pscore_)
+ scm_gc_mark (pscore_->self_scm ());
+ Score_translator::derived_mark ();
+ Engraver_group_engraver::derived_mark ();
+}
+
void
Score_engraver::make_columns ()
{
}
pscore_ = new Paper_score (dynamic_cast<Output_def *> (get_output_def ()));
+ scm_gc_unprotect_object (pscore_->self_scm ());
SCM props = updated_grob_properties (context (), ly_symbol2scm ("System"));
Score_engraver::announce_grob (Grob_info info)
{
announce_infos_.push (info);
- pscore_->root_system ()->typeset_grob (info.grob_);
- elems_.push (info.grob_);
+ pscore_->root_system ()->typeset_grob (info.grob ());
+ elems_.push (info.grob ());
}
void
system_->add_column (musical_column_);
}
-Music_output *
+SCM
Score_engraver::get_output ()
{
Music_output *o = pscore_;
- ///FIXME WTF ? pscore_ = 0;
- return o;
+ return o->self_scm ();
}
bool
void
Score_engraver::acknowledge_grob (Grob_info gi)
{
- if (Staff_spacing::has_interface (gi.grob_))
+ if (Staff_spacing::has_interface (gi.grob ()))
{
Pointer_group_interface::add_grob (command_column_,
ly_symbol2scm ("spacing-wishes"),
- gi.grob_);
+ gi.grob ());
}
- if (Note_spacing::has_interface (gi.grob_))
+ if (Note_spacing::has_interface (gi.grob ()))
{
Pointer_group_interface::add_grob (musical_column_,
ly_symbol2scm ("spacing-wishes"),
- gi.grob_);
+ gi.grob ());
}
- if (Axis_group_interface::has_interface (gi.grob_)
- && gi.grob_->internal_has_interface (ly_symbol2scm ("vertically-spaceable-interface")))
+ if (Axis_group_interface::has_interface (gi.grob ())
+ && gi.grob ()->internal_has_interface (ly_symbol2scm ("vertically-spaceable-interface")))
{
SCM spaceable = get_property ("verticallySpacedContexts");
Context *orig = gi.origin_contexts (this)[0];
{
Pointer_group_interface::add_grob (system_,
ly_symbol2scm ("spaceable-staves"),
- gi.grob_);
+ gi.grob ());
}
}
}