]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/rhythmic-music-iterator.cc
Merge remote-tracking branch 'origin/master' into translation
[lilypond.git] / lily / rhythmic-music-iterator.cc
index 1246e3854272ec622ef10e1766a9bb1024e2be96..c1edba9702eb5476335adeb867db71a7a2e4de5c 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2012 Mike Solomon <mike@apollinemike.com>
+  Copyright (C) 2012 Mike Solomon <mike@mikesolomon.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
@@ -47,7 +47,7 @@ Rhythmic_music_iterator::process (Moment m)
       descend_to_bottom_context ();
 
       Context *c = get_outlet ();
-      Stream_event *ev = get_music ()->to_event ();
+      Stream_event *ev = get_music ()->to_event (c);
       SCM arts = ev->get_property ("articulations");
 
       if (scm_is_pair (arts))
@@ -59,17 +59,13 @@ Rhythmic_music_iterator::process (Moment m)
           SCM unlistened = SCM_EOL;
           for (; scm_is_pair (arts); arts = scm_cdr (arts))
             {
-              if (scm_is_true
-                  (scm_call_2
-                   (ly_lily_module_constant ("any"),
-                    ly_lily_module_constant ("ly:is-listened-event-class"),
-                    scm_call_1
-                    (ly_lily_module_constant ("ly:make-event-class"),
-                     unsmob_stream_event (scm_car (arts))
-                     ->get_property ("class")))))
-                listened = scm_cons (scm_car (arts), listened);
+              SCM art = scm_car (arts);
+
+              if (c->event_source ()->is_listened_class
+                  (unsmob_stream_event (art)->get_property ("class")))
+                listened = scm_cons (art, listened);
               else
-                unlistened = scm_cons (scm_car (arts), unlistened);
+                unlistened = scm_cons (art, unlistened);
             }
           ev->set_property ("articulations", scm_reverse_x (unlistened, SCM_EOL));
           c->event_source ()->broadcast (ev);