diff options
author | Lennart Poettering <lennart@poettering.net> | 2009-04-13 23:21:00 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2009-04-13 23:21:00 +0200 |
commit | 98aab64c367f95d40b477d27a3354de1f6bb44d6 (patch) | |
tree | 70f079ca2e9255412f1372521f4c6d0fb997ee3f | |
parent | 428bb50930f3831f04c23e2518163b73e2173bb3 (diff) | |
parent | dc2eb66e0a23ffccce421aeeee149be9ce6c5a1d (diff) |
Merge commit 'coling/master'
-rw-r--r-- | src/cardwidget.cc | 8 | ||||
-rw-r--r-- | src/cardwidget.h | 2 | ||||
-rw-r--r-- | src/mainwindow.cc | 18 | ||||
-rw-r--r-- | src/pavucontrol.cc | 2 |
4 files changed, 21 insertions, 9 deletions
diff --git a/src/cardwidget.cc b/src/cardwidget.cc index ea4b208..c8efd31 100644 --- a/src/cardwidget.cc +++ b/src/cardwidget.cc @@ -55,11 +55,11 @@ void CardWidget::prepareMenu() { treeModel->clear(); /* Fill the ComboBox's Tree Model */ - for (std::map<Glib::ustring, Glib::ustring>::iterator i = profiles.begin(); i != profiles.end(); ++i) { + for (uint32_t i = 0; i < profiles.size(); ++i) { Gtk::TreeModel::Row row = *(treeModel->append()); - row[profileModel.name] = i->first; - row[profileModel.desc] = i->second; - if (i->first == activeProfile) + row[profileModel.name] = profiles[i].first; + row[profileModel.desc] = profiles[i].second; + if (profiles[i].first == activeProfile) active_idx = idx; idx++; } diff --git a/src/cardwidget.h b/src/cardwidget.h index d420c83..1f99b2b 100644 --- a/src/cardwidget.h +++ b/src/cardwidget.h @@ -36,7 +36,7 @@ public: uint32_t index; bool updating; - std::map<Glib::ustring,Glib::ustring> profiles; + std::vector< std::pair<Glib::ustring,Glib::ustring> > profiles; Glib::ustring activeProfile; bool hasSinks; bool hasSources; diff --git a/src/mainwindow.cc b/src/mainwindow.cc index 0277bb0..51eb539 100644 --- a/src/mainwindow.cc +++ b/src/mainwindow.cc @@ -22,6 +22,8 @@ #include <config.h> #endif +#include <set> + #include "mainwindow.h" #include "cardwidget.h" @@ -33,7 +35,12 @@ #include "i18n.h" -/*** MainWindow ***/ +/* Used for profile sorting */ +struct profile_prio_compare { + bool operator() (const pa_card_profile_info& lhs, const pa_card_profile_info& rhs) const + {return lhs.priority>rhs.priority;} +}; + MainWindow::MainWindow(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& x) : Gtk::Window(cobject), @@ -116,6 +123,7 @@ void MainWindow::updateCard(const pa_card_info &info) { CardWidget *w; bool is_new = false; const char *description, *icon; + std::set<pa_card_profile_info,profile_prio_compare> profile_priorities; if (cardWidgets.count(info.index)) w = cardWidgets[info.index]; @@ -136,11 +144,15 @@ void MainWindow::updateCard(const pa_card_info &info) { set_icon_name_fallback(w->iconImage, icon ? icon : "audio-card", Gtk::ICON_SIZE_SMALL_TOOLBAR); w->hasSinks = w->hasSources = false; - w->profiles.clear(); + profile_priorities.clear(); for (uint32_t i=0; i<info.n_profiles; ++i) { w->hasSinks = w->hasSinks || (info.profiles[i].n_sinks > 0); w->hasSources = w->hasSources || (info.profiles[i].n_sources > 0); - w->profiles.insert(std::pair<Glib::ustring,Glib::ustring>(info.profiles[i].name, info.profiles[i].description)); + profile_priorities.insert(info.profiles[i]); + } + w->profiles.clear(); + for (std::set<pa_card_profile_info>::iterator i=profile_priorities.begin(); i != profile_priorities.end(); ++i) { + w->profiles.push_back(std::pair<Glib::ustring,Glib::ustring>(i->name,i->description)); } w->activeProfile = info.active_profile->name; diff --git a/src/pavucontrol.cc b/src/pavucontrol.cc index 423c44b..3ec70c3 100644 --- a/src/pavucontrol.cc +++ b/src/pavucontrol.cc @@ -203,7 +203,7 @@ void server_info_cb(pa_context *, const pa_server_info *i, void *userdata) { } void ext_stream_restore_read_cb( - pa_context *c, + pa_context *, const pa_ext_stream_restore_info *i, int eol, void *userdata) { |