]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/ambitus-engraver.cc
Fix compile
[lilypond.git] / lily / ambitus-engraver.cc
index 3753249d879f9089069a776453cdc2db4e69f577..2585bd8bc1c0fe00f9f55a85232e97ecb82cc7c1 100644 (file)
@@ -28,8 +28,10 @@ class Ambitus_engraver : public Engraver
 {
 public:
   TRANSLATOR_DECLARATIONS (Ambitus_engraver);
+protected:
+  DECLARE_ACKNOWLEDGER (note_head);
+
   void process_music ();
-  void acknowledge_note_head (Grob_info);
   void stop_translation_timestep ();
   virtual void finalize ();
   virtual void derived_mark () const;
@@ -121,7 +123,14 @@ Ambitus_engraver::acknowledge_note_head (Grob_info info)
   Stream_event *nr = info.event_cause ();
   if (nr && nr->in_event_class ("note-event"))
     {
-      Pitch pitch = *unsmob_pitch (nr->get_property ("pitch"));
+      SCM p = nr->get_property ("pitch");
+      /*
+       If the engraver is added to a percussion context,
+       filter out unpitched note heads.
+      */
+      if (!unsmob_pitch (p))
+       return;
+      Pitch pitch = *unsmob_pitch (p);
       Drul_array<bool> expands = pitch_interval_.add_point (pitch);
       if (expands[UP])
        causes_[UP] = nr;