+2006-10-17 Erik Sandberg <mandolaerik@gmail.com>
+
+ * lily/recording-group-engraver.cc: removed
+
+ * lily/context.cc, lily/translator-group.cc: Don't touch
+ Context::implementation_ if it's null
+
2006-10-17 Han-Wen Nienhuys <hanwen@lilypond.org>
* scm/define-grob-interfaces.scm (stroke-finger-interface): typo.
@lilypond[fragment,relative=1,ragged-right]
\relative
{
- \set stringFingerOrientations = #'(right) % up left down
+ \set strokeFingerOrientations = #'(right) % up left down
\set fingeringOrientations = #'(down left up) % up left down
\set stringNumberOrientations = #'(down up left) % (up right down)
<c-1\4
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 ();
}
+++ /dev/null
-/*
- recording-group-engraver.hh -- declare Recording_group_engraver
-
- source file of the GNU LilyPond music typesetter
-
- (c) 2005--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
-*/
-
-#ifndef RECORDING_GROUP_ENGRAVER_HH
-#define RECORDING_GROUP_ENGRAVER_HH
-
-#include "engraver-group.hh"
-
-class Recording_group_engraver : public Engraver_group
-{
-public:
- VIRTUAL_COPY_CONSTRUCTOR (Translator_group, Recording_group_engraver);
- virtual bool try_music (Music *m);
- void add_music (SCM, SCM);
- Recording_group_engraver ();
- virtual void stop_translation_timestep ();
- virtual void finalize ();
- virtual void derived_mark () const;
- virtual void fetch_precomputable_methods (Translator_group_void_method ptrs[]);
-
- SCM now_events_;
- SCM accumulator_;
-};
-#endif /* RECORDING_GROUP_ENGRAVER_HH */
+++ /dev/null
-/*
- recording-group-engraver.cc -- implement Recording_group_engraver
-
- source file of the GNU LilyPond music typesetter
-
- (c) 2003--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
-
-TODO: junk this file
-*/
-
-#include "recording-group-engraver.hh"
-#include "context.hh"
-#include "music.hh"
-
-/*
- TODO: Junk this class, extract events directly instead.
-*/
-void
-Recording_group_engraver::derived_mark () const
-{
- Engraver_group::derived_mark ();
- scm_gc_mark (now_events_);
- scm_gc_mark (accumulator_);
-}
-
-Recording_group_engraver::Recording_group_engraver ()
-{
- accumulator_ = SCM_EOL;
- now_events_ = SCM_EOL;
-}
-
-void
-Recording_group_engraver::add_music (SCM music, SCM success)
-{
- now_events_ = scm_cons (scm_cons (music, success), now_events_);
-}
-
-void
-Recording_group_engraver::stop_translation_timestep ()
-{
- accumulator_ = scm_acons (scm_cons (context ()->now_mom ().smobbed_copy (),
- context ()->get_property ("instrumentTransposition")),
- now_events_,
- accumulator_);
- now_events_ = SCM_EOL;
-}
-
-void
-Recording_group_engraver::finalize ()
-{
- SCM proc = context ()->get_property ("recordEventSequence");
-
- if (ly_is_procedure (proc))
- scm_call_2 (proc, context ()->self_scm (), scm_cdr (accumulator_));
-}
-
-bool
-Recording_group_engraver::try_music (Music *m)
-{
- bool retval = true;//Translator_group::try_music (m);
-
- add_music (m->self_scm (), ly_bool2scm (retval));
- return retval;
-}
-
-void
-recording_engraver (Translator_group *tg)
-{
- Recording_group_engraver *rg = dynamic_cast<Recording_group_engraver *> (tg);
- rg->stop_translation_timestep ();
-}
-
-void
-Recording_group_engraver::fetch_precomputable_methods (Translator_group_void_method ptrs[])
-{
- Translator_group::fetch_precomputable_methods (ptrs);
- ptrs[STOP_TRANSLATION_TIMESTEP] = &recording_engraver;
-}
-
-ADD_TRANSLATOR_GROUP (Recording_group_engraver,
- "Engraver_group that records all music events "
- "for this context. Calls the procedure "
- "in @code{recordEventSequence} when finished.",
- "",
- "recordEventSequence",
- "");
#include "score-performer.hh"
#include "engraver-group.hh"
#include "performer-group.hh"
-#include "recording-group-engraver.hh"
#include "warn.hh"
/*
return new Score_engraver ();
else if (sym == ly_symbol2scm ("Score_performer"))
return new Score_performer ();
- else if (sym == ly_symbol2scm ("Recording_group_engraver"))
- return new Recording_group_engraver ();
programming_error ("Couldn't find type");
scm_flush (scm_current_error_port ());
Translator_group *tg
= dynamic_cast<Translator_group *> (c->implementation ());
- if (dir == DOWN)
+ if (tg && dir == DOWN)
{
tg->precomputed_translator_foreach (idx);
tg->call_precomputed_self_method (idx);
s = scm_cdr (s))
precomputed_recurse_over_translators (unsmob_context (scm_car (s)), idx, dir);
- if (dir == UP)
+ if (tg && dir == UP)
{
tg->precomputed_translator_foreach (idx);
tg->call_precomputed_self_method (idx);
Translator_group *tg
= dynamic_cast<Translator_group *> (c->implementation ());
- if (dir == DOWN)
+ if (tg && dir == DOWN)
{
(tg->*tg_ptr) ();
translator_each (tg->get_simple_trans_list (), ptr);
s = scm_cdr (s))
recurse_over_translators (unsmob_context (scm_car (s)), ptr, tg_ptr, dir);
- if (dir == UP)
+ if (tg && dir == UP)
{
translator_each (tg->get_simple_trans_list (),
ptr);
#(set-default-paper-size (ly:get-option 'paper-size))
-
partCombineListener = \layout {
- \context {
- \Voice
- \consists Note_heads_engraver
- \consists Rest_engraver
- \type "Recording_group_engraver"
- recordEventSequence = #notice-the-events-for-pc
- }
\context {
\Score
skipTypesetting = ##t