]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/dispatcher.cc
Let rhythmic-engraver make its articulation-or-event decision based on current listeners
[lilypond.git] / lily / dispatcher.cc
index 94519021abe43ccb4def37ce25fa595e3dd676a9..4db7c93a1555a66a9cffc6772ea9ac349a263379 100644 (file)
@@ -173,6 +173,27 @@ Dispatcher::dispatch (SCM sev)
 #endif
 }
 
+bool
+Dispatcher::is_listened (Stream_event *ev)
+{
+  SCM class_symbol = ev->get_property ("class");
+  if (!scm_is_symbol (class_symbol))
+    {
+      warning (_ ("Event class should be a symbol"));
+      return false;
+    }
+
+  for (SCM cl = scm_call_1 (ly_lily_module_constant ("ly:make-event-class"), class_symbol);
+       scm_is_pair (cl); cl = scm_cdr (cl))
+    {
+      SCM list = scm_hashq_ref (listeners_, scm_car (cl), SCM_EOL);
+      if (scm_is_pair (list))
+        return true;
+    }
+  return false;
+}
+
+
 void
 Dispatcher::broadcast (Stream_event *ev)
 {