X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fkey-performer.cc;h=14d73dbbb9fd3539030d00400b3ab695dab701d8;hb=434da79e9d7684b2b05fa92a6d808d4ea7933046;hp=d4d0527aa06e1d20f987da38e4ef8a0a2cf15177;hpb=13e79c0250d34b6bdfbafbc551ef64e8b59b2991;p=lilypond.git diff --git a/lily/key-performer.cc b/lily/key-performer.cc index d4d0527aa0..14d73dbbb9 100644 --- a/lily/key-performer.cc +++ b/lily/key-performer.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1997 Jan Nieuwenhuizen + (c) 1997--1999 Jan Nieuwenhuizen */ #include "key-performer.hh" @@ -12,46 +12,61 @@ -IMPLEMENT_IS_TYPE_B1(Key_performer,Performer); -ADD_THIS_PERFORMER(Key_performer); -Key_performer::Key_performer() +ADD_THIS_TRANSLATOR (Key_performer); + +Key_performer::Key_performer () { key_req_l_ = 0; + audio_p_ = 0; } -Key_performer::~Key_performer() +Key_performer::~Key_performer () { } void -Key_performer::do_print() const +Key_performer::do_print () const { #ifndef NPRINT - if ( key_req_l_) - key_req_l_->print(); + if (key_req_l_) + key_req_l_->print (); #endif } void -Key_performer::process_requests() +Key_performer::do_process_requests () { - if ( key_req_l_) - play (new Audio_key (key_req_l_) ); - key_req_l_ = 0; + if (key_req_l_) + { + audio_p_ = new Audio_key (key_req_l_->key_); + Audio_element_info info (audio_p_, key_req_l_); + announce_element (info); + key_req_l_ = 0; + } } -bool -Key_performer::do_try_request (Request* req_l) +void +Key_performer::do_pre_move_processing () { - if ( key_req_l_) - return false; + if (audio_p_) + { + play_element (audio_p_); + audio_p_ = 0; + } +} - if ( req_l->command()) - key_req_l_ = req_l->command()->keychange (); +bool +Key_performer::do_try_music (Music* req_l) +{ + if (Key_change_req *kc = dynamic_cast (req_l)) + { + if (key_req_l_) + warning ("FIXME. Key change merge"); - if ( key_req_l_) - return true; + key_req_l_ = kc; + return true; + } return false; }