diff --git a/src/prefs/media/MediaViews.cpp b/src/prefs/media/MediaViews.cpp index 571d668658..cefae21a1c 100644 --- a/src/prefs/media/MediaViews.cpp +++ b/src/prefs/media/MediaViews.cpp @@ -68,7 +68,7 @@ SettingsView::SettingsView (BRect frame, bool isVideo) AddChild(defaultsBox); BRect defaultRect(20, 22, 250, 40); - mMenu1 = new BPopUpMenu("menu1"); + mMenu1 = new BPopUpMenu(""); mMenu1->SetLabelFromMarked(true); BMenuField *menuField1 = new BMenuField(defaultRect, "menuField1", mIsVideo ? "Video Input:" : "Audio Input:", mMenu1); @@ -76,7 +76,7 @@ SettingsView::SettingsView (BRect frame, bool isVideo) menuField1->SetDivider(75); defaultRect.OffsetBy(0, 26); - mMenu2 = new BPopUpMenu("menu2"); + mMenu2 = new BPopUpMenu(""); mMenu2->SetLabelFromMarked(true); BMenuField *menuField2 = new BMenuField(defaultRect, "menuField2", mIsVideo ? "Video Output:" : "Audio Output:", mMenu2); @@ -85,7 +85,7 @@ SettingsView::SettingsView (BRect frame, bool isVideo) if(!mIsVideo) { defaultRect.OffsetBy(186, 0); - mMenu3 = new BPopUpMenu("menu3"); + mMenu3 = new BPopUpMenu(""); mMenu3->SetLabelFromMarked(true); BMenuField *mMenuField3 = new BMenuField(defaultRect, "menuField3", "Channel:", mMenu3); diff --git a/src/prefs/media/MediaWindow.cpp b/src/prefs/media/MediaWindow.cpp index ae2a5581f0..69b6185185 100644 --- a/src/prefs/media/MediaWindow.cpp +++ b/src/prefs/media/MediaWindow.cpp @@ -290,33 +290,37 @@ MediaWindow::InitMedia(bool first) int32 outputID; BString outputName; - roster->GetAudioInput(&default_node); - roster->GetDormantNodeFor(default_node, &node_info); - item = FindMediaListItem(&node_info); - if(item) - item->SetDefault(true, true); - mAudioView->SetDefault(node_info, true); + if(roster->GetAudioInput(&default_node)==B_OK) { + roster->GetDormantNodeFor(default_node, &node_info); + item = FindMediaListItem(&node_info); + if(item) + item->SetDefault(true, true); + mAudioView->SetDefault(node_info, true); + } - roster->GetAudioOutput(&default_node, &outputID, &outputName); - roster->GetDormantNodeFor(default_node, &node_info); - item = FindMediaListItem(&node_info); - if(item) - item->SetDefault(true, false); - mAudioView->SetDefault(node_info, false, outputID); + if(roster->GetAudioOutput(&default_node, &outputID, &outputName)==B_OK) { + roster->GetDormantNodeFor(default_node, &node_info); + item = FindMediaListItem(&node_info); + if(item) + item->SetDefault(true, false); + mAudioView->SetDefault(node_info, false, outputID); + } - roster->GetVideoInput(&default_node); - roster->GetDormantNodeFor(default_node, &node_info); - item = FindMediaListItem(&node_info); - if(item) - item->SetDefault(true, true); - mVideoView->SetDefault(node_info, true); + if(roster->GetVideoInput(&default_node)==B_OK) { + roster->GetDormantNodeFor(default_node, &node_info); + item = FindMediaListItem(&node_info); + if(item) + item->SetDefault(true, true); + mVideoView->SetDefault(node_info, true); + } - roster->GetVideoOutput(&default_node); - roster->GetDormantNodeFor(default_node, &node_info); - item = FindMediaListItem(&node_info); - if(item) - item->SetDefault(true, false); - mVideoView->SetDefault(node_info, false); + if(roster->GetVideoOutput(&default_node)==B_OK) { + roster->GetDormantNodeFor(default_node, &node_info); + item = FindMediaListItem(&node_info); + if(item) + item->SetDefault(true, false); + mVideoView->SetDefault(node_info, false); + } if(first) { mListView->Select(mListView->IndexOf(mixer)); @@ -389,6 +393,21 @@ MediaWindow::MessageReceived (BMessage *message) InitMedia(false); break; case ML_DEFAULTOUTPUT_CHANGE: + { + int32 index; + if(message->FindInt32("index", &index)!=B_OK) + break; + Settings2Item *item = static_cast(mAudioView->mMenu3->ItemAt(index)); + + if(item) { + BMediaRoster *roster = BMediaRoster::Roster(); + roster->SetAudioOutput(*item->mInput); + + if(mAudioView->mRestartTextView->IsHidden()) + mAudioView->mRestartTextView->Show(); + } else + fprintf(stderr, "Settings2Item not found\n"); + } break; case ML_DEFAULT_CHANGE: { @@ -416,8 +435,10 @@ MediaWindow::MessageReceived (BMessage *message) } else { if(isInput) roster->SetAudioInput(*item->mInfo); - else + else { roster->SetAudioOutput(*item->mInfo); + mAudioView->SetDefault(*item->mInfo, false, 0); + } } MediaListItem *oldListItem = NULL;