[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: disconnect coverage
From: |
Erik Sandberg |
Subject: |
Re: disconnect coverage |
Date: |
Sat, 6 Jan 2007 13:28:18 +0100 |
User-agent: |
KMail/1.9.5 |
On Thursday 04 January 2007 20:13, Han-Wen Nienhuys wrote:
> Erik Sandberg escreveu:
> > They are there for completeness. I think the reason they are never
> > called, is that score contexts aren't explicitly destroyed. I think this
> > is because contexts below Score are destroyed during iteration, while
> > scores themselves aren't (probably because they contain references to the
> > typeset score, which is needed later). Scores and score-translators are
> > therefore only removed by the GC, so the destructors are never executed.
>
> No, that's incorrect. Removal of contexts is different reclaiming the
> memory. Can you have a look at
>
> Global_context::run_iterator_on_me
>
> why the check_removal doesn't trigger for the Score context?
Sorry for being unclear.
check_removal always returns false for Score contexts, it has been that way
since I joined the project. There is a reason for this: The typeset score is
stored in the Score_engraver, which in turn is accessed through the
Global_context returned by ly:run-translator. So the score-translator must be
connected to the score-context after run-translator finishes.
I plan to change this: we should junk run-translator, and instead keep track
of both context and translator in the SCM code, and access the typeset score
directly via the created global-translator. Then it would be possible to
disconnect score-translators at iteration time.
This is however not high on my todo.
--
Erik