]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/glissando-engraver.cc
Fix some bugs in the dynamic engraver and PostScript backend
[lilypond.git] / lily / glissando-engraver.cc
index 6368e05a09554f9549c501431ae6e9f4eed873ee..f5b0527bd170350bc634cb14a51d5bd64828636c 100644 (file)
 #include "international.hh"
 #include "rhythmic-head.hh"
 #include "spanner.hh"
-#include "stream-event.hh"
 #include "warn.hh"
 
-#include "translator.icc"
-
 /**
    Create line-spanner grobs for glissandi lines that connect note
    heads.
@@ -25,16 +22,16 @@ public:
   TRANSLATOR_DECLARATIONS (Glissando_engraver);
 
 protected:
-  DECLARE_TRANSLATOR_LISTENER (glissando);
   DECLARE_ACKNOWLEDGER (rhythmic_head);
   virtual void finalize ();
+  virtual bool try_music (Music *);
 
   void stop_translation_timestep ();
   void process_music ();
 private:
   Spanner *line_;
   Spanner *last_line_;
-  Stream_event *event_;
+  Music *event_;
 };
 
 Glissando_engraver::Glissando_engraver ()
@@ -43,11 +40,15 @@ Glissando_engraver::Glissando_engraver ()
   event_ = 0;
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Glissando_engraver, glissando);
-void
-Glissando_engraver::listen_glissando (Stream_event *ev)
+bool
+Glissando_engraver::try_music (Music *m)
 {
-  ASSIGN_EVENT_ONCE (event_, ev);
+  if (!event_)
+    {
+      event_ = m;
+      return true;
+    }
+  return false;
 }
 
 void
@@ -100,6 +101,8 @@ Glissando_engraver::finalize ()
     }
 }
 
+#include "translator.icc"
+
 ADD_ACKNOWLEDGER (Glissando_engraver, rhythmic_head);
 ADD_TRANSLATOR (Glissando_engraver,
                /* doc */ "Engrave a glissandi",