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;
}
_isdcf_metadata_button->Bind (wxEVT_BUTTON, boost::bind (&DefaultsPage::edit_isdcf_metadata_clicked, this));
- vector<Ratio const *> ratios = Ratio::all ();
- for (size_t i = 0; i < ratios.size(); ++i) {
- _container->Append (std_to_wx (ratios[i]->nickname ()));
+ BOOST_FOREACH (Ratio const * i, Ratio::containers()) {
+ _container->Append (std_to_wx(i->container_nickname()));
}
_container->Bind (wxEVT_CHOICE, boost::bind (&DefaultsPage::container_changed, this));
_scale_to->Append (_("Guess from content"));
- for (size_t i = 0; i < ratios.size(); ++i) {
- _scale_to->Append (std_to_wx (ratios[i]->nickname ()));
+ BOOST_FOREACH (Ratio const * i, Ratio::all()) {
+ _scale_to->Append (std_to_wx(i->image_nickname()));
}
_scale_to->Bind (wxEVT_CHOICE, boost::bind (&DefaultsPage::scale_to_changed, this));
- vector<DCPContentType const *> const ct = DCPContentType::all ();
- for (size_t i = 0; i < ct.size(); ++i) {
- _dcp_content_type->Append (std_to_wx (ct[i]->pretty_name ()));
+ BOOST_FOREACH (DCPContentType const * i, DCPContentType::all()) {
+ _dcp_content_type->Append (std_to_wx (i->pretty_name ()));
}
setup_audio_channels_choice (_dcp_audio_channels, 2);