CVSROOT:        /cvsroot/lilypond
Module name:    lilypond
Branch:         
Changes by:     Han-Wen Nienhuys <[EMAIL PROTECTED]>    05/05/31 18:50:05

Modified files:
        .              : ChangeLog 
        lily           : lily-parser-scheme.cc score.cc 
                         stencil-interpret.cc 
        scm            : define-stencil-commands.scm 

Log message:
        * lily/lily-parser-scheme.cc (LY_DEFINE): unprotect paper
        too. Plugs memory leak.
        
        * lily/score.cc (Score): unprotect copy of Output_def. Plugs
        memory leak.

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/ChangeLog.diff?tr1=1.3695&tr2=1.3696&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/lily-parser-scheme.cc.diff?tr1=1.10&tr2=1.11&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/score.cc.diff?tr1=1.163&tr2=1.164&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/stencil-interpret.cc.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/scm/define-stencil-commands.scm.diff?tr1=1.2&tr2=1.3&r1=text&r2=text

Patches:
Index: lilypond/ChangeLog
diff -u lilypond/ChangeLog:1.3695 lilypond/ChangeLog:1.3696
--- lilypond/ChangeLog:1.3695   Tue May 31 15:44:48 2005
+++ lilypond/ChangeLog  Tue May 31 18:50:02 2005
@@ -1,5 +1,8 @@
 2005-05-31  Han-Wen Nienhuys  <[EMAIL PROTECTED]>
 
+       * lily/lily-parser-scheme.cc (LY_DEFINE): unprotect paper
+       too. Plugs memory leak.
+
        * make/lilypond.fedora.spec.in (Group): remove
        lilypond-pdfpc-helper.
 
Index: lilypond/lily/lily-parser-scheme.cc
diff -u lilypond/lily/lily-parser-scheme.cc:1.10 
lilypond/lily/lily-parser-scheme.cc:1.11
--- lilypond/lily/lily-parser-scheme.cc:1.10    Tue Apr 12 22:49:28 2005
+++ lilypond/lily/lily-parser-scheme.cc Tue May 31 18:50:04 2005
@@ -194,7 +194,8 @@
   SCM_ASSERT_TYPE (parser, parser_smob, SCM_ARG1, __FUNCTION__, "parser");
   SCM_ASSERT_TYPE (score, score_smob, SCM_ARG2, __FUNCTION__, "score");
 
-  SCM header = ly_c_module_p (score->header_) ? score->header_
+  SCM header = ly_c_module_p (score->header_)
+    ? score->header_
     : parser->lexer_->lookup_identifier ("$globalheader");
 
   File_name outname (parser->output_basename_);
@@ -212,12 +213,15 @@
   if (score->defs_.is_empty ())
     {
       Output_def *layout = get_layout (parser);
-      default_rendering (score->get_music (), layout->self_scm (),
-                        get_paper (parser)->self_scm (),
+      default_rendering (score->get_music (),
+                        layout->self_scm (),
+                        paper,
                         header, os, key->self_scm ());
+      
       scm_gc_unprotect_object (layout->self_scm ());
     }
 
+  scm_gc_unprotect_object (paper);
   scm_gc_unprotect_object (key->self_scm ());
   return SCM_UNSPECIFIED;
 }
Index: lilypond/lily/score.cc
diff -u lilypond/lily/score.cc:1.163 lilypond/lily/score.cc:1.164
--- lilypond/lily/score.cc:1.163        Tue May 31 15:25:26 2005
+++ lilypond/lily/score.cc      Tue May 31 18:50:04 2005
@@ -119,7 +119,9 @@
     }
 
   SCM context = ly_run_translator (music, scaled_def, key);
-  Music_output *output = unsmob_music_output (ly_format_output (context));
+
+  SCM output_as_scm = ly_format_output (context);
+  Music_output *output = unsmob_music_output (output_as_scm);
       
   if (Paper_score *pscore = dynamic_cast<Paper_score*> (output))
     {
@@ -137,9 +139,9 @@
       paper_book->classic_output (ly_scm2string (outname));
       scm_gc_unprotect_object (paper_book->self_scm ());
     }
-  scm_gc_unprotect_object (output->self_scm ());
 
   scm_remember_upto_here_1 (scaled_def);
+  scm_remember_upto_here_1 (output_as_scm);
   scm_remember_upto_here_1 (scaled_bookdef);
 }
 
Index: lilypond/lily/stencil-interpret.cc
diff -u lilypond/lily/stencil-interpret.cc:1.1 
lilypond/lily/stencil-interpret.cc:1.2
--- lilypond/lily/stencil-interpret.cc:1.1      Mon May 30 23:38:46 2005
+++ lilypond/lily/stencil-interpret.cc  Tue May 31 18:50:04 2005
@@ -29,6 +29,7 @@
        }
       else if (head == ly_symbol2scm ("combine-stencil"))
        {
+
          for (SCM x = scm_cdr (expr); scm_is_pair (x); x = scm_cdr (x))
            interpret_stencil_expression (scm_car (x), func, func_arg, o);
          return;
Index: lilypond/scm/define-stencil-commands.scm
diff -u lilypond/scm/define-stencil-commands.scm:1.2 
lilypond/scm/define-stencil-commands.scm:1.3
--- lilypond/scm/define-stencil-commands.scm:1.2        Mon May 30 23:45:22 2005
+++ lilypond/scm/define-stencil-commands.scm    Tue May 31 18:50:04 2005
@@ -29,7 +29,15 @@
        white-dot
        white-text
        embedded-ps
-       zigzag-line))
+       zigzag-line
+       setcolor
+       resetcolor
+
+       grob-cause
+       no-origin
+       placebox
+       unknown
+       ))
 
 ;; TODO:
 ;;  - generate this list by registering the output-backend-commands
@@ -38,8 +46,8 @@
 
 (define-public (ly:all-output-backend-commands)
   "Return list of output backend commands."
-  '(
-    grob-cause
-    no-origin
-    placebox
-    unknown))
+  '(combine-stencil
+    color
+    translate-stencil))
+
+(map ly:register-stencil-expression (ly:all-output-backend-commands))


_______________________________________________
Lilypond-cvs mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/lilypond-cvs

Reply via email to