From bbe5e6b67f58883202aa2038a7b9e94ce6d92868 Mon Sep 17 00:00:00 2001
From: Erik Sandberg <mandolaerik@gmail.com>
Date: Tue, 17 Oct 2006 11:44:23 +0000
Subject: [PATCH] 	* lily/recording-group-engraver.cc: removed

	* lily/context.cc, lily/translator-group.cc: Don't touch
	Context::implementation_ if it's null
---
 ChangeLog                                |  7 ++
 Documentation/topdocs/NEWS.tely          |  2 +-
 lily/context.cc                          |  4 +-
 lily/include/recording-group-engraver.hh | 29 --------
 lily/recording-group-engraver.cc         | 86 ------------------------
 lily/translator-group-ctors.cc           |  3 -
 lily/translator-group.cc                 |  8 +--
 ly/declarations-init.ly                  |  8 ---
 8 files changed, 15 insertions(+), 132 deletions(-)
 delete mode 100644 lily/include/recording-group-engraver.hh
 delete mode 100644 lily/recording-group-engraver.cc

diff --git a/ChangeLog b/ChangeLog
index be427b1af1..3bcf616d5c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+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.
diff --git a/Documentation/topdocs/NEWS.tely b/Documentation/topdocs/NEWS.tely
index b85b736bff..2023155f36 100644
--- a/Documentation/topdocs/NEWS.tely
+++ b/Documentation/topdocs/NEWS.tely
@@ -72,7 +72,7 @@ now also be added,
 @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
diff --git a/lily/context.cc b/lily/context.cc
index 80a6fb9138..7065487745 100644
--- a/lily/context.cc
+++ b/lily/context.cc
@@ -509,7 +509,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 ();
 }
 
diff --git a/lily/include/recording-group-engraver.hh b/lily/include/recording-group-engraver.hh
deleted file mode 100644
index 06c00694aa..0000000000
--- a/lily/include/recording-group-engraver.hh
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
-  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 */
diff --git a/lily/recording-group-engraver.cc b/lily/recording-group-engraver.cc
deleted file mode 100644
index 5af35d291b..0000000000
--- a/lily/recording-group-engraver.cc
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
-  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",
-		      "");
diff --git a/lily/translator-group-ctors.cc b/lily/translator-group-ctors.cc
index a0573a7a76..6684842876 100644
--- a/lily/translator-group-ctors.cc
+++ b/lily/translator-group-ctors.cc
@@ -10,7 +10,6 @@
 #include "score-performer.hh"
 #include "engraver-group.hh"
 #include "performer-group.hh"
-#include "recording-group-engraver.hh"
 #include "warn.hh"
 
 /*
@@ -27,8 +26,6 @@ get_translator_group (SCM sym)
     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 ());
diff --git a/lily/translator-group.cc b/lily/translator-group.cc
index da3fda5ed5..4ef8c49d6b 100644
--- a/lily/translator-group.cc
+++ b/lily/translator-group.cc
@@ -202,7 +202,7 @@ precomputed_recurse_over_translators (Context *c, Translator_precompute_index id
   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);
@@ -212,7 +212,7 @@ precomputed_recurse_over_translators (Context *c, Translator_precompute_index id
        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);
@@ -225,7 +225,7 @@ recurse_over_translators (Context *c, Translator_method ptr, Translator_group_me
   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);
@@ -235,7 +235,7 @@ recurse_over_translators (Context *c, Translator_method ptr, Translator_group_me
        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);
diff --git a/ly/declarations-init.ly b/ly/declarations-init.ly
index d62be48370..6728973084 100644
--- a/ly/declarations-init.ly
+++ b/ly/declarations-init.ly
@@ -97,15 +97,7 @@ repeatTie = #(make-music 'RepeatTieEvent)
 
 #(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
-- 
2.39.5