From cbb9ae439afec74edc1536ef881c4dcd5044513c Mon Sep 17 00:00:00 2001 From: Michal Vasilek Date: Tue, 28 Sep 2021 20:30:31 +0200 Subject: [PATCH 1/2] pulseaudio: stop disabling asserts fixes segfaults with pavucontrol 5.0 --- srcpkgs/pulseaudio/template | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/srcpkgs/pulseaudio/template b/srcpkgs/pulseaudio/template index ac2205d76f4b..911dfb197d31 100644 --- a/srcpkgs/pulseaudio/template +++ b/srcpkgs/pulseaudio/template @@ -1,13 +1,13 @@ # Template file for 'pulseaudio' pkgname=pulseaudio version=15.0 -revision=1 +revision=2 build_style=meson configure_args="-Djack=enabled -Dlirc=disabled -Dhal-compat=false -Dorc=enabled -Dgtk=disabled -Dsystemd=disabled -Dwebrtc-aec=enabled -Dbluez5=enabled -Dbluez5-ofono-headset=false -Dbluez5-native-headset=true -Delogind=enabled -Dudevrulesdir=/usr/lib/udev/rules.d - -Dbashcompletiondir=/usr/share/bash-completion/completions" + -Dbashcompletiondir=/usr/share/bash-completion/completions -Db_ndebug=false" hostmakedepends="cmake m4 gettext libtool orc-devel perl-XML-Parser pkg-config doxygen" makedepends="$(vopt_if avahi avahi-libs-devel) eudev-libudev-devel fftw-devel jack-devel From ccf75366342e8b04111837a6a3b06bb10d226089 Mon Sep 17 00:00:00 2001 From: Michal Vasilek Date: Tue, 28 Sep 2021 20:33:20 +0200 Subject: [PATCH 2/2] pavucontrol: update to 5.0. --- .../pavucontrol/patches/fix-segfault.patch | 319 ------------------ srcpkgs/pavucontrol/template | 12 +- 2 files changed, 6 insertions(+), 325 deletions(-) delete mode 100644 srcpkgs/pavucontrol/patches/fix-segfault.patch diff --git a/srcpkgs/pavucontrol/patches/fix-segfault.patch b/srcpkgs/pavucontrol/patches/fix-segfault.patch deleted file mode 100644 index fe7fcba5ccc7..000000000000 --- a/srcpkgs/pavucontrol/patches/fix-segfault.patch +++ /dev/null @@ -1,319 +0,0 @@ -Upstream: yes, not released. - -Remove configure.ac changes to avoid need to reconfigure. -We know we have the necessary version of its dependencies. - -From 284082551938b65e71d06bda793fedbd4a4f41ab Mon Sep 17 00:00:00 2001 -From: Felipe Sateler -Date: Sat, 28 Dec 2019 12:39:38 -0300 -Subject: [PATCH] Migrate away from deprecated Gtk interfaces - -This was accomplished by building with -DGTKMM_DISABLE_DEPRECATED. ---- - configure.ac | 2 +- - src/channelwidget.h | 2 +- - src/devicewidget.cc | 6 +++--- - src/mainwindow.cc | 12 ++++++------ - src/pavuapplication.cc | 22 +++++++++++++++------- - src/pavuapplication.h | 2 ++ - src/pavucontrol.cc | 7 ++++--- - src/pavucontrol.glade | 24 ++++++++++++------------ - src/sinkwidget.h | 2 +- - src/streamwidget.cc | 2 +- - 10 files changed, 46 insertions(+), 35 deletions(-) - -diff --git a/src/channelwidget.h b/src/channelwidget.h -index c9c5c9d..6216b74 100644 ---- a/src/channelwidget.h -+++ b/src/channelwidget.h -@@ -38,7 +38,7 @@ public: - - Gtk::Label *channelLabel; - Gtk::Label *volumeLabel; -- Gtk::HScale *volumeScale; -+ Gtk::Scale *volumeScale; - - int channel; - MinimalStreamWidget *minimalStreamWidget; -diff --git a/src/devicewidget.cc b/src/devicewidget.cc -index e1b1869..dd41487 100644 ---- a/src/devicewidget.cc -+++ b/src/devicewidget.cc -@@ -227,7 +227,7 @@ void DeviceWidget::prepareMenu() { - - bool DeviceWidget::onContextTriggerEvent(GdkEventButton* event) { - if (GDK_BUTTON_PRESS == event->type && 3 == event->button) { -- contextMenu.popup(event->button, event->time); -+ contextMenu.popup_at_pointer((GdkEvent*)event); - return true; - } - -@@ -259,8 +259,8 @@ void DeviceWidget::renamePopup() { - x->get_widget("renameText", renameText); - - renameText->set_text(description); -- dialog->add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL); -- dialog->add_button(Gtk::Stock::OK, Gtk::RESPONSE_OK); -+ dialog->add_button("_Cancel", Gtk::RESPONSE_CANCEL); -+ dialog->add_button("_OK", Gtk::RESPONSE_OK); - dialog->set_default_response(Gtk::RESPONSE_OK); - if (Gtk::RESPONSE_OK == dialog->run()) { - pa_operation* o; -diff --git a/src/mainwindow.cc b/src/mainwindow.cc -index f3d8620..e1a0a82 100644 ---- a/src/mainwindow.cc -+++ b/src/mainwindow.cc -@@ -95,11 +95,11 @@ MainWindow::MainWindow(BaseObjectType* cobject, const Glib::RefPtr - x->get_widget("notebook", notebook); - x->get_widget("showVolumeMetersCheckButton", showVolumeMetersCheckButton); - -- cardsVBox->set_reallocate_redraws(true); -- sourcesVBox->set_reallocate_redraws(true); -- streamsVBox->set_reallocate_redraws(true); -- recsVBox->set_reallocate_redraws(true); -- sinksVBox->set_reallocate_redraws(true); -+ sourcesVBox->signal_size_allocate().connect([this](Gdk::Rectangle _unused){ sourcesVBox->queue_draw(); }); -+ cardsVBox->signal_size_allocate().connect([this](Gdk::Rectangle _unused){ cardsVBox->queue_draw(); }); -+ streamsVBox->signal_size_allocate().connect([this](Gdk::Rectangle _unused){ streamsVBox->queue_draw(); }); -+ recsVBox->signal_size_allocate().connect([this](Gdk::Rectangle _unused){ recsVBox->queue_draw(); }); -+ sinksVBox->signal_size_allocate().connect([this](Gdk::Rectangle _unused){ sinksVBox->queue_draw(); }); - - sinkInputTypeComboBox->set_active((int) showSinkInputType); - sourceOutputTypeComboBox->set_active((int) showSourceOutputType); -@@ -222,7 +222,7 @@ bool MainWindow::on_key_press_event(GdkEventKey* event) { - case GDK_KEY_Q: - case GDK_KEY_w: - case GDK_KEY_q: -- Gtk::Main::quit(); -+ this->get_application()->quit(); - return true; - } - } -diff --git a/src/pavuapplication.cc b/src/pavuapplication.cc -index 2ff5739..6773b53 100644 ---- a/src/pavuapplication.cc -+++ b/src/pavuapplication.cc -@@ -30,6 +30,14 @@ - #include "pavucontrol.h" - #include "mainwindow.h" - -+static PavuApplication globalInstance; -+ -+PavuApplication& -+PavuApplication::get_instance() -+{ -+ return globalInstance; -+} -+ - PavuApplication::PavuApplication() : - Gtk::Application("org.pulseaudio.pavucontrol", Gio::ApplicationFlags::APPLICATION_HANDLES_COMMAND_LINE), - mainWindow(NULL), -@@ -143,26 +151,26 @@ int main(int argc, char *argv[]) { - signal(SIGPIPE, SIG_IGN); - - /* Create the application */ -- auto app = PavuApplication(); -+ globalInstance = PavuApplication(); - - /* Add command-line options */ -- app.add_main_option_entry( -+ globalInstance.add_main_option_entry( - Gio::Application::OptionType::OPTION_TYPE_INT, - "tab", 't', - _("Select a specific tab on load."), - _("number")); - -- app.add_main_option_entry( -+ globalInstance.add_main_option_entry( - Gio::Application::OptionType::OPTION_TYPE_BOOL, - "retry", 'r', - _("Retry forever if pa quits (every 5 seconds).")); - -- app.add_main_option_entry( -+ globalInstance.add_main_option_entry( - Gio::Application::OptionType::OPTION_TYPE_BOOL, - "maximize", 'm', - _("Maximize the window.")); - -- app.add_main_option_entry( -+ globalInstance.add_main_option_entry( - Gio::Application::OptionType::OPTION_TYPE_BOOL, - "version", 'v', - _("Show version.")); -@@ -170,7 +178,7 @@ int main(int argc, char *argv[]) { - /* Connect to the "on_command_line" signal which is fired - * when the application receives command-line arguments - */ -- app.signal_command_line().connect(sigc::bind(sigc::ptr_fun(&on_command_line), &app), false); -+ globalInstance.signal_command_line().connect(sigc::bind(sigc::ptr_fun(&on_command_line), &globalInstance), false); - - /* Run the application. - * In the first launched instance, this will return when its window is -@@ -179,5 +187,5 @@ int main(int argc, char *argv[]) { - * Handling a new request consists of presenting the existing window (and - * optionally, select a tab). - */ -- return app.run(argc, argv); -+ return globalInstance.run(argc, argv); - } -diff --git a/src/pavuapplication.h b/src/pavuapplication.h -index 3589c5d..d2a1f5a 100644 ---- a/src/pavuapplication.h -+++ b/src/pavuapplication.h -@@ -37,6 +37,8 @@ public: - gint32 tab; - bool version; - -+ static PavuApplication& get_instance(); -+ - protected: - // Override default signal handlers: - void on_activate() override; -diff --git a/src/pavucontrol.cc b/src/pavucontrol.cc -index 6981707..bcdde8e 100644 ---- a/src/pavucontrol.cc -+++ b/src/pavucontrol.cc -@@ -40,6 +40,7 @@ - #include "sourceoutputwidget.h" - #include "rolewidget.h" - #include "mainwindow.h" -+#include "pavuapplication.h" - - static pa_context* context = NULL; - static pa_mainloop_api* api = NULL; -@@ -56,7 +57,7 @@ void show_error(const char *txt) { - Gtk::MessageDialog dialog(buf, false, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_CLOSE, true); - dialog.run(); - -- Gtk::Main::quit(); -+ PavuApplication::get_instance().quit(); - } - - static void dec_outstanding(MainWindow *w) { -@@ -571,7 +572,7 @@ void context_state_callback(pa_context *c, void *userdata) { - - case PA_CONTEXT_TERMINATED: - default: -- Gtk::Main::quit(); -+ w->get_application()->quit(); - return; - } - } -@@ -613,7 +614,7 @@ gboolean connect_to_pulse(gpointer userdata) { - else { - if(!retry) { - reconnect_timeout = -1; -- Gtk::Main::quit(); -+ w->get_application()->quit(); - } else { - g_debug(_("Connection failed, attempting reconnect")); - reconnect_timeout = 5; -diff --git a/src/pavucontrol.glade b/src/pavucontrol.glade -index e26e0c4..ed83b04 100644 ---- a/src/pavucontrol.glade -+++ b/src/pavucontrol.glade -@@ -425,10 +425,10 @@ - True - False - -- -+ - False -- 2 -- 3 -+ True -+ True - - - PCM -@@ -439,6 +439,10 @@ - True - True - -+ -+ 0 -+ 0 -+ - - - -@@ -450,7 +454,7 @@ - - - 1 -- 2 -+ 0 - - - -@@ -462,8 +466,8 @@ - True - - -- 1 -- 2 -+ 2 -+ 0 - - - -@@ -475,8 +479,8 @@ - True - - -- 2 -- 3 -+ 0 -+ 1 - - - -@@ -489,9 +493,7 @@ - - - 1 -- 2 - 1 -- 2 - - - -@@ -504,9 +506,7 @@ - - - 2 -- 3 - 1 -- 2 - - - -diff --git a/src/sinkwidget.h b/src/sinkwidget.h -index 0044ffc..924fca0 100644 ---- a/src/sinkwidget.h -+++ b/src/sinkwidget.h -@@ -46,7 +46,7 @@ public: - - #if HAVE_EXT_DEVICE_RESTORE_API - encodingList encodings[PAVU_NUM_ENCODINGS]; -- Gtk::Table *encodingSelect; -+ Gtk::Grid *encodingSelect; - #endif - - virtual void onMuteToggleButton(); -diff --git a/src/streamwidget.cc b/src/streamwidget.cc -index 00df09f..d203b20 100644 ---- a/src/streamwidget.cc -+++ b/src/streamwidget.cc -@@ -66,7 +66,7 @@ void StreamWidget::init(MainWindow* mainWindow) { - - bool StreamWidget::onContextTriggerEvent(GdkEventButton* event) { - if (GDK_BUTTON_PRESS == event->type && 3 == event->button) { -- contextMenu.popup(event->button, event->time); -+ contextMenu.popup_at_pointer((GdkEvent*)event); - return true; - } - return false; --- -GitLab - diff --git a/srcpkgs/pavucontrol/template b/srcpkgs/pavucontrol/template index 45e93d9b130a..3c20da8593b5 100644 --- a/srcpkgs/pavucontrol/template +++ b/srcpkgs/pavucontrol/template @@ -1,14 +1,14 @@ # Template file for 'pavucontrol' pkgname=pavucontrol -reverts="5.0_1" -version=4.0 -revision=3 +version=5.0 +revision=2 build_style=gnu-configure hostmakedepends="pkg-config intltool" -makedepends="gtkmm-devel libcanberra-devel gtk+3-devel pulseaudio-devel" +makedepends="gtkmm-devel libcanberra-devel gtk+3-devel pulseaudio-devel + json-glib-devel" short_desc="PulseAudio Volume Control" maintainer="Orphaned " license="GPL-2.0-or-later" homepage="https://freedesktop.org/software/pulseaudio/pavucontrol/" -distfiles="${homepage}/${pkgname}-${version}.tar.xz" -checksum=8fc45bac9722aefa6f022999cbb76242d143c31b314e2dbb38f034f4069d14e2 +distfiles="https://freedesktop.org/software/pulseaudio/pavucontrol/pavucontrol-${version}.tar.xz" +checksum=ce2b72c3b5f1a70ad0df19dd81750f9455bd20870d1d3a36d20536af2e8f4e7a