Revision 2e526a15 server/src/Arbiter.cpp

View differences:

server/src/Arbiter.cpp
52 52
    emotion_config_current.init_sad();
53 53
    emotion_config_current.set_duration(2000);
54 54
    emotion_config_default.init_neutral();
55

  
56
    utterance = boost::shared_ptr<Utterance>(new Utterance());
55 57
}
56 58

  
57 59
Arbiter::~Arbiter(){
......
145 147
    }
146 148
}
147 149

  
148
void Arbiter::speak(Utterance u){ //, ao_sample_format audio_format, char *audio_data, unsigned int audio_len){
150
void Arbiter::speak(boost::shared_ptr<Utterance> u){ //, ao_sample_format audio_format, char *audio_data, unsigned int audio_len){
149 151
    //lock audio playback as such:
150 152
    mutex::scoped_lock scoped_lock_audio(audio_player_mutex);
151 153

  
......
155 157
    scoped_lock.unlock();
156 158

  
157 159
    //start audio playback, this function returns once we started playback
158
    audio_player->play(utterance.get_audio_data());
159
    utterance.start_playback();
160
    audio_player->play(utterance->get_audio_data());
161
    utterance->start_playback();
160 162

  
161 163
    //wait until audio playback was finished:
162 164
    while(audio_player->is_playing()){
......
165 167
    }
166 168
    //in case the audio output fails, we end up here before the utterance is finished.
167 169
    //so check now if the utterance finished as well:
168
    while (utterance.is_playing()){
170
    while (utterance->is_playing()){
169 171
        //save some cpu cycles:
170 172
        usleep(1*1000); //1ms
171 173
    }
......
197 199

  
198 200
void Arbiter::override_by_utterance(){
199 201
    //fetch MouthState by utterance:
200
    if (!utterance.is_playing()){
202
    if (!utterance->is_playing()){
201 203
        //not playing -> return
202 204
        return;
203 205
    }
204 206

  
205 207
    //fetch symbol
206
    string symbol = utterance.currently_active_phoneme();
208
    string symbol = utterance->currently_active_phoneme();
207 209
    if ((symbol.empty()) || (symbol == "")){
208 210
        return;
209 211
    }

Also available in: Unified diff