]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/clef-engraver.cc
(derived_mark): new method. Yes. We
[lilypond.git] / lily / clef-engraver.cc
index 99b92bd5e441d6203d4cd07476d5288452fb5845..04603ba7b9cabb1fe0c23cb45eeffdd09d4bedbc 100644 (file)
@@ -27,9 +27,11 @@ public:
   Direction octave_dir_;
 
 protected:
-  PRECOMPUTED_VIRTUAL void stop_translation_timestep ();
-  PRECOMPUTED_VIRTUAL void process_music ();
-  DECLARE_ACKNOWLEDGER(bar_line);
+  void stop_translation_timestep ();
+  void process_music ();
+  DECLARE_ACKNOWLEDGER (bar_line);
+
+  virtual void derived_mark () const;
 private:
   Item *clef_;
   Item *octavate_;
@@ -42,6 +44,14 @@ private:
   void inspect_clef_properties ();
 };
 
+void
+Clef_engraver::derived_mark () const
+{
+  scm_gc_mark (prev_octavation_);
+  scm_gc_mark (prev_cpos_);
+  scm_gc_mark (prev_glyph_);
+}
+
 Clef_engraver::Clef_engraver ()
 {
   clef_ = 0;
@@ -102,7 +112,7 @@ Clef_engraver::create_clef ()
          int dir = sign (abs_oct);
          abs_oct = abs (abs_oct) + 1;
 
-         SCM txt = scm_number_to_string (scm_int2num (abs_oct),
+         SCM txt = scm_number_to_string (scm_from_int (abs_oct),
                                          scm_from_int (10));
 
          g->set_property ("text",
@@ -112,7 +122,7 @@ Clef_engraver::create_clef ()
 
          g->set_parent (clef_, Y_AXIS);
          g->set_parent (clef_, X_AXIS);
-         g->set_property ("direction", scm_int2num (dir));
+         g->set_property ("direction", scm_from_int (dir));
          octavate_ = g;
        }
     }
@@ -151,7 +161,8 @@ Clef_engraver::inspect_clef_properties ()
 
   if (to_boolean (force_clef))
     {
-      Context *w = context ()->where_defined (ly_symbol2scm ("forceClef"));
+      SCM prev;
+      Context *w = context ()->where_defined (ly_symbol2scm ("forceClef"), &prev);
       w->set_property ("forceClef", SCM_EOL);
     }
 }
@@ -182,11 +193,10 @@ Clef_engraver::stop_translation_timestep ()
     }
 }
 
-ADD_ACKNOWLEDGER(Clef_engraver, bar_line);
+ADD_ACKNOWLEDGER (Clef_engraver, bar_line);
 ADD_TRANSLATOR (Clef_engraver,
                /* descr */ "Determine and set reference point for pitches",
                /* creats*/ "Clef OctavateEight",
                /* accepts */ "",
-               /* acks  */ "",
                /* reads */ "clefPosition clefGlyph middleCPosition clefOctavation explicitClefVisibility forceClef",
                /* write */ "");