diff --git a/meson.build b/meson.build index d6e410d..10384da 100644 --- a/meson.build +++ b/meson.build @@ -10,7 +10,7 @@ cpp = meson.get_compiler('cpp') gtkmm_dep = dependency('gtkmm-4.0', version : '>= 4.0', required : true) sigcpp_dep = dependency('sigc++-2.0', required : true) -canberragtk_dep = dependency('libcanberra', version : '>= 0.16', required : true) +canberragtk_dep = dependency('libcanberra', version : '>= 0.16', required : false) libpulse_dep = dependency('libpulse', version : '>= 5.0', required : true) libpulsemlglib_dep = dependency('libpulse-mainloop-glib', version : '>= 0.9.16', required : true) @@ -41,6 +41,8 @@ cdata.set_quoted('GETTEXT_PACKAGE', 'pavucontrol') cdata.set_quoted('LOCALEDIR', localedir) cdata.set_quoted('GLADE_FILE', join_paths(datadir, 'pavucontrol', 'pavucontrol.glade')) +cdata.set('HAVE_LIBCANBERRA', canberragtk_dep.found()) + # Now generate config.h from everything above configure_file(output : 'config.h', configuration : cdata) diff --git a/src/mainwindow.cc b/src/mainwindow.cc index 9579dad..9bee3b1 100644 --- a/src/mainwindow.cc +++ b/src/mainwindow.cc @@ -76,9 +76,10 @@ MainWindow::MainWindow(BaseObjectType* cobject, const Glib::RefPtr canRenameDevices(false), m_connected(false), m_config_filename(NULL) { +#ifdef HAVE_LIBCANBERRA ca_context_create(&canberraContext); ca_context_set_driver(canberraContext, "pulse"); - +#endif cardsVBox = x->get_widget("cardsVBox"); streamsVBox = x->get_widget("streamsVBox"); recsVBox = x->get_widget("recsVBox"); @@ -271,8 +272,9 @@ finish: g_free(i->second); clientNames.erase(i); } - +#ifdef HAVE_LIBCANBERRA ca_context_destroy(canberraContext); +#endif } static void set_icon_name_default(Gtk::Image *i, const char *name) { diff --git a/src/mainwindow.h b/src/mainwindow.h index ca40a7b..dcbc2f0 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -29,7 +29,9 @@ class MainWindow; # include #endif +#ifdef HAVE_LIBCANBERRA #include +#endif #include @@ -118,7 +120,9 @@ public: bool canRenameDevices; +#ifdef HAVE_LIBCANBERRA ca_context *canberraContext; +#endif protected: virtual void on_realize(); diff --git a/src/sinkwidget.cc b/src/sinkwidget.cc index 1cbc1c3..0af4957 100644 --- a/src/sinkwidget.cc +++ b/src/sinkwidget.cc @@ -24,7 +24,10 @@ #include "sinkwidget.h" +#ifdef HAVE_LIBCANBERRA #include +#endif + #if HAVE_EXT_DEVICE_RESTORE_API # include # include @@ -111,7 +114,6 @@ SinkWidget* SinkWidget::create(MainWindow* mainWindow) { void SinkWidget::executeVolumeUpdate() { pa_operation* o; char dev[64]; - int playing = 0; if (!(o = pa_context_set_sink_volume_by_index(get_context(), index, &volume, NULL, NULL))) { show_error(this, _("pa_context_set_sink_volume_by_index() failed")); @@ -122,6 +124,8 @@ void SinkWidget::executeVolumeUpdate() { snprintf(dev, sizeof(dev), "%lu", (unsigned long) index); +#ifdef HAVE_LIBCANBERRA + int playing = 0; ca_context_playing(mpMainWindow->canberraContext, 2, &playing); if (playing) return; @@ -137,6 +141,7 @@ void SinkWidget::executeVolumeUpdate() { NULL); ca_context_change_device(mpMainWindow->canberraContext, NULL); +#endif } void SinkWidget::onMuteToggleButton() {