summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2009-04-13 23:21:00 +0200
committerLennart Poettering <lennart@poettering.net>2009-04-13 23:21:00 +0200
commit98aab64c367f95d40b477d27a3354de1f6bb44d6 (patch)
tree70f079ca2e9255412f1372521f4c6d0fb997ee3f
parent428bb50930f3831f04c23e2518163b73e2173bb3 (diff)
parentdc2eb66e0a23ffccce421aeeee149be9ce6c5a1d (diff)
Merge commit 'coling/master'
-rw-r--r--src/cardwidget.cc8
-rw-r--r--src/cardwidget.h2
-rw-r--r--src/mainwindow.cc18
-rw-r--r--src/pavucontrol.cc2
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) {