lilypond-auto
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Lilypond-auto] Issue 3636 in lilypond: suicided grobs should never be u


From: lilypond
Subject: [Lilypond-auto] Issue 3636 in lilypond: suicided grobs should never be used for anything
Date: Mon, 28 Oct 2013 06:08:49 +0000

Status: Accepted
Owner: address@hidden
Labels: Type-Maintainability

New issue 3636 by address@hidden: suicided grobs should never be used for anything
http://code.google.com/p/lilypond/issues/detail?id=3636

Fixing issue 3631 has revealed that, in some parts of the code, suicided Items (Items responding negatively to is_live) contain information that is used by LilyPond for spacing. This seems contradictory to the idea of grob suicide. If Grob::suicide is:

void
Grob::suicide ()
{
  if (!is_live ())
    return;

  for (int a = X_AXIS; a < NO_AXES; a++)
    dim_cache_[a].clear ();

  mutable_property_alist_ = SCM_EOL;
  object_alist_ = SCM_EOL;
  immutable_property_alist_ = SCM_EOL;
  interfaces_ = SCM_EOL;
}

then an Item::suicide should be

Item::suicide ()
{
  if (!is_live ())
    return;

  broken_to_drul_[LEFT] = broken_to_drul_[RIGHT] = 0;
  cached_pure_height_valid_ = false;
  Interval cached_pure_height_ = Interval ();
  Grob::suicide();
}

other subclasses of grob should have more robust suicide methods as well.

This better design choice would mean that prebroken dependencies can no longer be accessed after a suicide, which would be a problem for Axis_group_interface::internal_calc_pure_relevant_grobs as well as perhaps other functions.

--
You received this message because this project is configured to send all issue notifications to this address.
You may adjust your notification preferences at:
https://code.google.com/hosting/settings



reply via email to

[Prev in Thread] Current Thread [Next in Thread]