X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fcontext.cc;h=d4177e77bfa040018e57a085a68740085c915204;hb=730c54a571ab3b6c30e02be5f93c876abee0f9a7;hp=5211cbb3f01f2bd118375e09e5e541e776d399e3;hpb=e09265d8e9ad94714076ca91e63eab5c55679286;p=lilypond.git diff --git a/lily/context.cc b/lily/context.cc index 5211cbb3f0..d4177e77bf 100644 --- a/lily/context.cc +++ b/lily/context.cc @@ -238,7 +238,7 @@ Context::set_property_from_event (SCM sev) if (val != SCM_EOL) ok = type_check_assignment (sym, val, ly_symbol2scm ("translation-type?")); if (ok) - internal_set_property (sym, val); + set_property (sym, val); } } @@ -444,7 +444,7 @@ Context::internal_send_stream_event (SCM type, Input *origin, SCM props[]) Stream_event *e = new Stream_event (type, origin); for (int i = 0; props[i]; i += 2) { - e->internal_set_property (props[i], props[i+1]); + e->set_property (props[i], props[i+1]); } event_source_->broadcast (e); e->unprotect (); @@ -469,12 +469,20 @@ Context::add_alias (SCM sym) } void -Context::internal_set_property (SCM sym, SCM val) +Context::internal_set_property (SCM sym, SCM val +#ifndef NDEBUG + , char const *file, int line, char const *fun +#endif + ) { #ifndef NDEBUG + (void) file; + (void) line; + (void) fun; +#endif + if (do_internal_type_checking_global) assert (type_check_assignment (sym, val, ly_symbol2scm ("translation-type?"))); -#endif properties_dict ()->set (sym, val); } @@ -507,7 +515,9 @@ void Context::remove_context (SCM) { /* ugh, the translator group should listen to RemoveContext events by itself */ - implementation ()->disconnect_from_context (); + Translator_group *impl = implementation (); + if (impl) + impl->disconnect_from_context (); disconnect_from_parent (); } @@ -643,10 +653,15 @@ Context::mark_smob (SCM sm) scm_gc_mark (me->definition_mods_); scm_gc_mark (me->properties_scm_); scm_gc_mark (me->accepts_list_); + if (me->implementation_) scm_gc_mark (me->implementation_->self_scm ()); - if (me->event_source_) scm_gc_mark (me->event_source_->self_scm ()); - if (me->events_below_) scm_gc_mark (me->events_below_->self_scm ()); + + if (me->event_source_) + scm_gc_mark (me->event_source_->self_scm ()); + + if (me->events_below_) + scm_gc_mark (me->events_below_->self_scm ()); return me->properties_scm_; } @@ -655,20 +670,6 @@ IMPLEMENT_SMOBS (Context); IMPLEMENT_DEFAULT_EQUAL_P (Context); IMPLEMENT_TYPE_P (Context, "ly:context?"); -bool -Context::try_music (Music *m) -{ - Translator_group *t = implementation (); - if (!t) - return false; - - bool b = t->try_music (m); - if (!b && daddy_context_) - b = daddy_context_->try_music (m); - - return b; -} - Global_context * Context::get_global_context () const { @@ -737,7 +738,7 @@ measure_position (Context const *context) void set_context_property_on_children (Context *trans, SCM sym, SCM val) { - trans->internal_set_property (sym, ly_deep_copy (val)); + trans->set_property (sym, ly_deep_copy (val)); for (SCM p = trans->children_contexts (); scm_is_pair (p); p = scm_cdr (p)) { Context *trg = unsmob_context (scm_car (p));