Awhile ago, I filed a ticket about pulseaudio crashing on stopping second copy of xserver if first was 'startx' and second 'startx -- :1'. Seems it's going to be resolved as WONTFIX, but I want to note something that suggests it could be at least partially fixed: one day, when I was switching my session manager to a different one, while first copy of xserver was still running under the old one, one that was running in the new one (again, 'startx -- :1') could be ended without crash. That obviously lasted only till the restart. Now, as I follow some of the posts on the list, it seems that pavucontrol will get some updates soon. As libglade was declared deprecated by its upstream awhile ago, I'm attaching a patch dropping libglademm dep and a gtkbuilder file (auto-converted by glade). On that note: module-device-manager isn't present in the config file from the tarball, yet git of pavucontrol complains if it's not present. Is that module considered stable by now ? -------------- next part -------------- diff --git a/configure.ac b/configure.ac index 96613ba..beb33f3 100644 --- a/configure.ac +++ b/configure.ac @@ -39,7 +39,7 @@ AC_PROG_LN_S AC_TYPE_SIGNAL AC_HEADER_STDC -PKG_CHECK_MODULES(GUILIBS, [ gtkmm-2.4 >= 2.16 libglademm-2.4 sigc++-2.0 libcanberra-gtk >= 0.16 ]) +PKG_CHECK_MODULES(GUILIBS, [ gtkmm-2.4 >= 2.16 sigc++-2.0 libcanberra-gtk >= 0.16 ]) AC_SUBST(GUILIBS_CFLAGS) AC_SUBST(GUILIBS_LIBS) diff --git a/src/Makefile.am b/src/Makefile.am index 7257260..7c668fd 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -40,8 +40,8 @@ pavucontrol_SOURCES= \ i18n.h pavucontrol_LDADD=$(AM_LDADD) $(GUILIBS_LIBS) $(PULSE_LIBS) -pavucontrol_CXXFLAGS=$(AM_CXXFLAGS) $(GUILIBS_CFLAGS) $(PULSE_CFLAGS) -DLOCALEDIR=\"$(localedir)\" -pavucontrol_CXXFLAGS+=-DGLADE_FILE=\"$(gladedir)/pavucontrol.glade\" +pavucontrol_CPPFLAGS=$(AM_CXXFLAGS) $(GUILIBS_CFLAGS) $(PULSE_CFLAGS) -DLOCALEDIR=\"$(localedir)\" +pavucontrol_CPPFLAGS+=-DGLADE_FILE=\"$(gladedir)/pavucontrol.glade\" #pavucontrol_CXXFLAGS+=-DGLADE_FILE=\"pavucontrol.glade\" EXTRA_DIST = $(glade_DATA) $(desktop_in_files) diff --git a/src/cardwidget.cc b/src/cardwidget.cc index c8efd31..c79ac6c 100644 --- a/src/cardwidget.cc +++ b/src/cardwidget.cc @@ -27,7 +27,7 @@ #include "i18n.h" /*** CardWidget ***/ -CardWidget::CardWidget(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& x) : +CardWidget::CardWidget(BaseObjectType* cobject, const Glib::RefPtr<Gtk::Builder>& x) : Gtk::VBox(cobject) { x->get_widget("nameLabel", nameLabel); @@ -43,7 +43,7 @@ CardWidget::CardWidget(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade: CardWidget* CardWidget::create() { CardWidget* w; - Glib::RefPtr<Gnome::Glade::Xml> x = Gnome::Glade::Xml::create(GLADE_FILE, "cardWidget"); + Glib::RefPtr<Gtk::Builder> x = Gtk::Builder::create_from_file(GLADE_FILE, "cardWidget"); x->get_widget_derived("cardWidget", w); return w; } diff --git a/src/cardwidget.h b/src/cardwidget.h index ca90273..3837d5b 100644 --- a/src/cardwidget.h +++ b/src/cardwidget.h @@ -25,7 +25,7 @@ class CardWidget : public Gtk::VBox { public: - CardWidget(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& x); + CardWidget(BaseObjectType* cobject, const Glib::RefPtr<Gtk::Builder>& x); static CardWidget* create(); Gtk::Label *nameLabel; diff --git a/src/channelwidget.cc b/src/channelwidget.cc index bcfcd82..21f3afa 100644 --- a/src/channelwidget.cc +++ b/src/channelwidget.cc @@ -31,7 +31,7 @@ static bool show_decibel = true; /*** ChannelWidget ***/ -ChannelWidget::ChannelWidget(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& x) : +ChannelWidget::ChannelWidget(BaseObjectType* cobject, const Glib::RefPtr<Gtk::Builder>& x) : Gtk::EventBox(cobject), volumeScaleEnabled(true) { @@ -47,7 +47,9 @@ ChannelWidget::ChannelWidget(BaseObjectType* cobject, const Glib::RefPtr<Gnome:: ChannelWidget* ChannelWidget::create() { ChannelWidget* w; - Glib::RefPtr<Gnome::Glade::Xml> x = Gnome::Glade::Xml::create(GLADE_FILE, "channelWidget"); + Glib::RefPtr<Gtk::Builder> x = Gtk::Builder::create(); + x->add_from_file(GLADE_FILE, "adjustment1"); + x->add_from_file(GLADE_FILE, "channelWidget"); x->get_widget_derived("channelWidget", w); return w; } diff --git a/src/channelwidget.h b/src/channelwidget.h index b15fe84..26a880c 100644 --- a/src/channelwidget.h +++ b/src/channelwidget.h @@ -27,7 +27,7 @@ class MinimalStreamWidget; class ChannelWidget : public Gtk::EventBox { public: - ChannelWidget(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& x); + ChannelWidget(BaseObjectType* cobject, const Glib::RefPtr<Gtk::Builder>& x); static ChannelWidget* create(); void setVolume(pa_volume_t volume); diff --git a/src/devicewidget.cc b/src/devicewidget.cc index 0798e42..9a75970 100644 --- a/src/devicewidget.cc +++ b/src/devicewidget.cc @@ -31,7 +31,7 @@ #include "i18n.h" /*** DeviceWidget ***/ -DeviceWidget::DeviceWidget(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& x) : +DeviceWidget::DeviceWidget(BaseObjectType* cobject, const Glib::RefPtr<Gtk::Builder>& x) : MinimalStreamWidget(cobject, x) { x->get_widget("lockToggleButton", lockToggleButton); @@ -197,7 +197,7 @@ void DeviceWidget::renamePopup() { Gtk::Dialog* dialog; Gtk::Entry* renameText; - Glib::RefPtr<Gnome::Glade::Xml> x = Gnome::Glade::Xml::create(GLADE_FILE, "renameDialog"); + Glib::RefPtr<Gtk::Builder> x = Gtk::Builder::create_from_file(GLADE_FILE, "renameDialog"); x->get_widget("renameDialog", dialog); x->get_widget("renameText", renameText); diff --git a/src/devicewidget.h b/src/devicewidget.h index 3170f04..358c708 100644 --- a/src/devicewidget.h +++ b/src/devicewidget.h @@ -30,7 +30,7 @@ class ChannelWidget; class DeviceWidget : public MinimalStreamWidget { public: - DeviceWidget(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& x); + DeviceWidget(BaseObjectType* cobject, const Glib::RefPtr<Gtk::Builder>& x); void init(MainWindow* mainWindow, Glib::ustring); void setChannelMap(const pa_channel_map &m, bool can_decibel); diff --git a/src/mainwindow.cc b/src/mainwindow.cc index 4995b53..88539f0 100644 --- a/src/mainwindow.cc +++ b/src/mainwindow.cc @@ -66,7 +66,7 @@ struct source_port_prio_compare { } }; -MainWindow::MainWindow(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& x) : +MainWindow::MainWindow(BaseObjectType* cobject, const Glib::RefPtr<Gtk::Builder>& x) : Gtk::Window(cobject), showSinkInputType(SINK_INPUT_CLIENT), showSinkType(SINK_ALL), @@ -139,7 +139,12 @@ MainWindow::MainWindow(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade: MainWindow* MainWindow::create() { MainWindow* w; - Glib::RefPtr<Gnome::Glade::Xml> x = Gnome::Glade::Xml::create(GLADE_FILE, "mainWindow"); + Glib::RefPtr<Gtk::Builder> x = Gtk::Builder::create(); + x->add_from_file(GLADE_FILE, "liststore1"); + x->add_from_file(GLADE_FILE, "liststore2"); + x->add_from_file(GLADE_FILE, "liststore3"); + x->add_from_file(GLADE_FILE, "liststore4"); + x->add_from_file(GLADE_FILE, "mainWindow"); x->get_widget_derived("mainWindow", w); return w; } diff --git a/src/mainwindow.h b/src/mainwindow.h index 2b2dc5c..dda741a 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -34,7 +34,7 @@ class RoleWidget; class MainWindow : public Gtk::Window { public: - MainWindow(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& x); + MainWindow(BaseObjectType* cobject, const Glib::RefPtr<Gtk::Builder>& x); static MainWindow* create(); virtual ~MainWindow(); diff --git a/src/minimalstreamwidget.cc b/src/minimalstreamwidget.cc index ac665de..562739d 100644 --- a/src/minimalstreamwidget.cc +++ b/src/minimalstreamwidget.cc @@ -25,7 +25,7 @@ #include "minimalstreamwidget.h" /*** MinimalStreamWidget ***/ -MinimalStreamWidget::MinimalStreamWidget(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& x) : +MinimalStreamWidget::MinimalStreamWidget(BaseObjectType* cobject, const Glib::RefPtr<Gtk::Builder>& x) : Gtk::VBox(cobject), peakProgressBar(), lastPeak(0), diff --git a/src/minimalstreamwidget.h b/src/minimalstreamwidget.h index ba7eb1d..7d5ee24 100644 --- a/src/minimalstreamwidget.h +++ b/src/minimalstreamwidget.h @@ -25,7 +25,7 @@ class MinimalStreamWidget : public Gtk::VBox { public: - MinimalStreamWidget(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& x); + MinimalStreamWidget(BaseObjectType* cobject, const Glib::RefPtr<Gtk::Builder>& x); Gtk::VBox *channelsVBox; Gtk::Label *nameLabel, *boldNameLabel; diff --git a/src/pavucontrol.h b/src/pavucontrol.h index 0e0f6bd..a7eb72a 100644 --- a/src/pavucontrol.h +++ b/src/pavucontrol.h @@ -27,12 +27,11 @@ #include <libintl.h> #include <gtkmm.h> -#include <libglademm.h> #include <pulse/pulseaudio.h> #ifndef GLADE_FILE -#define GLADE_FILE "pavucontrol.glade" +#define GLADE_FILE "pavucontrol2.glade" #endif enum SinkInputType { diff --git a/src/rolewidget.cc b/src/rolewidget.cc index 31be005..fd3196c 100644 --- a/src/rolewidget.cc +++ b/src/rolewidget.cc @@ -28,7 +28,7 @@ #include "i18n.h" -RoleWidget::RoleWidget(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& x) : +RoleWidget::RoleWidget(BaseObjectType* cobject, const Glib::RefPtr<Gtk::Builder>& x) : StreamWidget(cobject, x) { lockToggleButton->hide(); @@ -38,7 +38,7 @@ RoleWidget::RoleWidget(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade: RoleWidget* RoleWidget::create() { RoleWidget* w; - Glib::RefPtr<Gnome::Glade::Xml> x = Gnome::Glade::Xml::create(GLADE_FILE, "streamWidget"); + Glib::RefPtr<Gtk::Builder> x = Gtk::Builder::create_from_file(GLADE_FILE, "streamWidget"); x->get_widget_derived("streamWidget", w); return w; } diff --git a/src/rolewidget.h b/src/rolewidget.h index c7b198c..1d008f2 100644 --- a/src/rolewidget.h +++ b/src/rolewidget.h @@ -27,7 +27,7 @@ class RoleWidget : public StreamWidget { public: - RoleWidget(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& x); + RoleWidget(BaseObjectType* cobject, const Glib::RefPtr<Gtk::Builder>& x); static RoleWidget* create(); Glib::ustring role; diff --git a/src/sinkinputwidget.cc b/src/sinkinputwidget.cc index 76d865f..b88b718 100644 --- a/src/sinkinputwidget.cc +++ b/src/sinkinputwidget.cc @@ -28,7 +28,7 @@ #include "i18n.h" -SinkInputWidget::SinkInputWidget(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& x) : +SinkInputWidget::SinkInputWidget(BaseObjectType* cobject, const Glib::RefPtr<Gtk::Builder>& x) : StreamWidget(cobject, x) { gchar *txt; @@ -40,7 +40,7 @@ SinkInputWidget::SinkInputWidget(BaseObjectType* cobject, const Glib::RefPtr<Gno SinkInputWidget* SinkInputWidget::create(MainWindow* mainWindow) { SinkInputWidget* w; - Glib::RefPtr<Gnome::Glade::Xml> x = Gnome::Glade::Xml::create(GLADE_FILE, "streamWidget"); + Glib::RefPtr<Gtk::Builder> x = Gtk::Builder::create_from_file(GLADE_FILE, "streamWidget"); x->get_widget_derived("streamWidget", w); w->init(mainWindow); return w; diff --git a/src/sinkinputwidget.h b/src/sinkinputwidget.h index 11893ff..de3ecb8 100644 --- a/src/sinkinputwidget.h +++ b/src/sinkinputwidget.h @@ -29,7 +29,7 @@ class MainWindow; class SinkInputWidget : public StreamWidget { public: - SinkInputWidget(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& x); + SinkInputWidget(BaseObjectType* cobject, const Glib::RefPtr<Gtk::Builder>& x); static SinkInputWidget* create(MainWindow* mainWindow); ~SinkInputWidget(void); diff --git a/src/sinkwidget.cc b/src/sinkwidget.cc index 3196dc7..c797e68 100644 --- a/src/sinkwidget.cc +++ b/src/sinkwidget.cc @@ -28,13 +28,13 @@ #include "i18n.h" -SinkWidget::SinkWidget(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& x) : +SinkWidget::SinkWidget(BaseObjectType* cobject, const Glib::RefPtr<Gtk::Builder>& x) : DeviceWidget(cobject, x) { } SinkWidget* SinkWidget::create(MainWindow* mainWindow) { SinkWidget* w; - Glib::RefPtr<Gnome::Glade::Xml> x = Gnome::Glade::Xml::create(GLADE_FILE, "deviceWidget"); + Glib::RefPtr<Gtk::Builder> x = Gtk::Builder::create_from_file(GLADE_FILE, "deviceWidget"); x->get_widget_derived("deviceWidget", w); w->init(mainWindow, "sink"); return w; diff --git a/src/sinkwidget.h b/src/sinkwidget.h index 84f0d4a..3fbd7aa 100644 --- a/src/sinkwidget.h +++ b/src/sinkwidget.h @@ -27,7 +27,7 @@ class SinkWidget : public DeviceWidget { public: - SinkWidget(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& x); + SinkWidget(BaseObjectType* cobject, const Glib::RefPtr<Gtk::Builder>& x); static SinkWidget* create(MainWindow* mainWindow); SinkType type; diff --git a/src/sourceoutputwidget.cc b/src/sourceoutputwidget.cc index 7064b38..ce1cbb6 100644 --- a/src/sourceoutputwidget.cc +++ b/src/sourceoutputwidget.cc @@ -28,7 +28,7 @@ #include "i18n.h" -SourceOutputWidget::SourceOutputWidget(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& x) : +SourceOutputWidget::SourceOutputWidget(BaseObjectType* cobject, const Glib::RefPtr<Gtk::Builder>& x) : StreamWidget(cobject, x) { gchar *txt; @@ -44,7 +44,7 @@ SourceOutputWidget::SourceOutputWidget(BaseObjectType* cobject, const Glib::RefP SourceOutputWidget* SourceOutputWidget::create(MainWindow* mainWindow) { SourceOutputWidget* w; - Glib::RefPtr<Gnome::Glade::Xml> x = Gnome::Glade::Xml::create(GLADE_FILE, "streamWidget"); + Glib::RefPtr<Gtk::Builder> x = Gtk::Builder::create_from_file(GLADE_FILE, "streamWidget"); x->get_widget_derived("streamWidget", w); w->init(mainWindow); return w; diff --git a/src/sourceoutputwidget.h b/src/sourceoutputwidget.h index 0b88d06..e9b0dce 100644 --- a/src/sourceoutputwidget.h +++ b/src/sourceoutputwidget.h @@ -29,7 +29,7 @@ class MainWindow; class SourceOutputWidget : public StreamWidget { public: - SourceOutputWidget(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& x); + SourceOutputWidget(BaseObjectType* cobject, const Glib::RefPtr<Gtk::Builder>& x); static SourceOutputWidget* create(MainWindow* mainWindow); ~SourceOutputWidget(void); diff --git a/src/sourcewidget.cc b/src/sourcewidget.cc index 29980cc..5e4ecf0 100644 --- a/src/sourcewidget.cc +++ b/src/sourcewidget.cc @@ -26,13 +26,13 @@ #include "i18n.h" -SourceWidget::SourceWidget(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& x) : +SourceWidget::SourceWidget(BaseObjectType* cobject, const Glib::RefPtr<Gtk::Builder>& x) : DeviceWidget(cobject, x) { } SourceWidget* SourceWidget::create(MainWindow* mainWindow) { SourceWidget* w; - Glib::RefPtr<Gnome::Glade::Xml> x = Gnome::Glade::Xml::create(GLADE_FILE, "deviceWidget"); + Glib::RefPtr<Gtk::Builder> x = Gtk::Builder::create_from_file(GLADE_FILE, "deviceWidget"); x->get_widget_derived("deviceWidget", w); w->init(mainWindow, "source"); return w; diff --git a/src/sourcewidget.h b/src/sourcewidget.h index 9a2cca3..ebd92e3 100644 --- a/src/sourcewidget.h +++ b/src/sourcewidget.h @@ -27,7 +27,7 @@ class SourceWidget : public DeviceWidget { public: - SourceWidget(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& x); + SourceWidget(BaseObjectType* cobject, const Glib::RefPtr<Gtk::Builder>& x); static SourceWidget* create(MainWindow* mainWindow); SourceType type; diff --git a/src/streamwidget.cc b/src/streamwidget.cc index c4ad15f..431e460 100644 --- a/src/streamwidget.cc +++ b/src/streamwidget.cc @@ -29,7 +29,7 @@ #include "i18n.h" /*** StreamWidget ***/ -StreamWidget::StreamWidget(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& x) : +StreamWidget::StreamWidget(BaseObjectType* cobject, const Glib::RefPtr<Gtk::Builder>& x) : MinimalStreamWidget(cobject, x), peak(NULL), mpMainWindow(NULL) { diff --git a/src/streamwidget.h b/src/streamwidget.h index 28a2a47..b797ec5 100644 --- a/src/streamwidget.h +++ b/src/streamwidget.h @@ -30,7 +30,7 @@ class ChannelWidget; class StreamWidget : public MinimalStreamWidget { public: - StreamWidget(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& x); + StreamWidget(BaseObjectType* cobject, const Glib::RefPtr<Gtk::Builder>& x); void init(MainWindow* mainWindow); void setChannelMap(const pa_channel_map &m, bool can_decibel); -------------- next part -------------- A non-text attachment was scrubbed... Name: pavucontrol2.glade.xz Type: application/octet-stream Size: 3056 bytes Desc: not available URL: <http://lists.freedesktop.org/archives/pulseaudio-discuss/attachments/20110227/ce5313ad/attachment.obj>