diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/player.cc | 4 | ||||
| -rw-r--r-- | src/wx/config_dialog.cc | 12 |
2 files changed, 10 insertions, 6 deletions
diff --git a/src/lib/player.cc b/src/lib/player.cc index 5c84ea5f5..82159df71 100644 --- a/src/lib/player.cc +++ b/src/lib/player.cc @@ -565,7 +565,7 @@ Player::pass () audio_fill_towards += DCPTime::from_seconds (earliest->content->audio->delay() / 1000.0); } - if (audio_fill_from && audio_fill_from < audio_fill_towards) { + if (audio_fill_from && audio_fill_from < audio_fill_towards && ((audio_fill_towards - *audio_fill_from) >= one_video_frame())) { DCPTimePeriod period (*audio_fill_from, audio_fill_towards); if (period.duration() > one_video_frame()) { period.to = period.from + one_video_frame(); @@ -919,7 +919,7 @@ void Player::emit_audio (shared_ptr<AudioBuffers> data, DCPTime time) { Audio (data, time); - _last_audio_time = time + DCPTime::from_frames (data->frames(), _film->audio_frame_rate ()); + _last_audio_time = time + DCPTime::from_frames (data->frames(), _film->audio_frame_rate()); } void diff --git a/src/wx/config_dialog.cc b/src/wx/config_dialog.cc index 796972384..03dae5281 100644 --- a/src/wx/config_dialog.cc +++ b/src/wx/config_dialog.cc @@ -329,21 +329,25 @@ private: checked_set (_preview_sound, config->preview_sound()); optional<string> const current_so = get_preview_sound_output (); - string configured_so; + optional<string> configured_so; if (config->preview_sound_output()) { configured_so = config->preview_sound_output().get(); } else { /* No configured output means we should use the default */ RtAudio audio (DCPOMATIC_RTAUDIO_API); - configured_so = audio.getDeviceInfo(audio.getDefaultOutputDevice()).name; + try { + configured_so = audio.getDeviceInfo(audio.getDefaultOutputDevice()).name; + } catch (RtAudioError& e) { + /* Probably no audio devices at all */ + } } - if (!current_so || *current_so != configured_so) { + if (configured_so && current_so != configured_so) { /* Update _preview_sound_output with the configured value */ unsigned int i = 0; while (i < _preview_sound_output->GetCount()) { - if (_preview_sound_output->GetString(i) == std_to_wx(configured_so)) { + if (_preview_sound_output->GetString(i) == std_to_wx(*configured_so)) { _preview_sound_output->SetSelection (i); break; } |
