From: paper42 <paper42@users.noreply.github.com>
To: ml@inbox.vuxu.org
Subject: Re: [PR PATCH] [Updated] pulseaudio: stop disabling asserts, pavucontrol: update to 5.0.
Date: Fri, 01 Oct 2021 23:01:40 +0200 [thread overview]
Message-ID: <20211001210140.p-lnwC8IgDMwHlZM7C1TGVXKbgpdPQLcytUDi0NsBhQ@z> (raw)
In-Reply-To: <gh-mailinglist-notifications-41a7ca26-5023-4802-975b-f1789d68868e-void-packages-33169@inbox.vuxu.org>
[-- Attachment #1: Type: text/plain, Size: 799 bytes --]
There is an updated pull request by paper42 against master on the void-packages repository
https://github.com/paper42/void-packages pavucontrol-5
https://github.com/void-linux/void-packages/pull/33169
pulseaudio: stop disabling asserts, pavucontrol: update to 5.0.
#### General
- [ ] This is a new package and it conforms to the [quality requirements](https://github.com/void-linux/void-packages/blob/master/Manual.md#quality-requirements)
#### Have the results of the proposed changes been tested?
- [ ] I use the packages affected by the proposed changes on a regular basis and confirm this PR works for me
- [x] I generally don't use the affected packages but briefly tested this PR
cc @anddam
A patch file from https://github.com/void-linux/void-packages/pull/33169.patch is attached
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-pavucontrol-5-33169.patch --]
[-- Type: text/x-diff, Size: 19652 bytes --]
From b649703d1a5da7a539bdb65825ef6c321fa1d72a Mon Sep 17 00:00:00 2001
From: Michal Vasilek <michal@vasilek.cz>
Date: Tue, 28 Sep 2021 20:30:31 +0200
Subject: [PATCH 1/2] pulseaudio: fix segfault when listing handlers
PulseAudio segfaulted when asserts were disabled and an application tried
to list handlers:
pactl send-message /core list-handlers
This was bug was triggered with the pavucontrol 5.0 update.
https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/issues/1278
---
...ession-with-side-effect-in-pa_assert.patch | 79 +++++++++++++++++++
srcpkgs/pulseaudio/template | 2 +-
2 files changed, 80 insertions(+), 1 deletion(-)
create mode 100644 srcpkgs/pulseaudio/patches/fix-expression-with-side-effect-in-pa_assert.patch
diff --git a/srcpkgs/pulseaudio/patches/fix-expression-with-side-effect-in-pa_assert.patch b/srcpkgs/pulseaudio/patches/fix-expression-with-side-effect-in-pa_assert.patch
new file mode 100644
index 000000000000..eff6b1c1406c
--- /dev/null
+++ b/srcpkgs/pulseaudio/patches/fix-expression-with-side-effect-in-pa_assert.patch
@@ -0,0 +1,79 @@
+From e1899245703f1dfa3220af465046c287a5f1c2ba Mon Sep 17 00:00:00 2001
+From: "Igor V. Kovalenko" <igor.v.kovalenko@gmail.com>
+Date: Thu, 30 Sep 2021 08:40:35 +0300
+Subject: [PATCH] Fix expression with side effect in pa_assert
+
+Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/641>
+---
+ src/modules/bluetooth/module-bluez5-device.c | 4 ++--
+ src/pulsecore/card.c | 4 ++--
+ src/pulsecore/core.c | 4 ++--
+ src/pulsecore/dbus-util.c | 2 +-
+ 4 files changed, 7 insertions(+), 7 deletions(-)
+
+diff --git a/src/modules/bluetooth/module-bluez5-device.c b/src/modules/bluetooth/module-bluez5-device.c
+index 9774be5cc..afbb7e3fa 100644
+--- a/src/modules/bluetooth/module-bluez5-device.c
++++ b/src/modules/bluetooth/module-bluez5-device.c
+@@ -2513,10 +2513,10 @@ static int bluez5_device_message_handler(const char *object_path, const char *me
+ pa_bluetooth_profile_t profile;
+ const pa_a2dp_endpoint_conf *endpoint_conf;
+ const char *codec_name;
+- struct userdata *u;
++ struct userdata *u = userdata;
+ bool is_a2dp_sink;
+
+- pa_assert(u = (struct userdata *)userdata);
++ pa_assert(u);
+ pa_assert(message);
+ pa_assert(response);
+
+diff --git a/src/pulsecore/card.c b/src/pulsecore/card.c
+index 23b347b59..4f5997d2c 100644
+--- a/src/pulsecore/card.c
++++ b/src/pulsecore/card.c
+@@ -467,10 +467,10 @@ int pa_card_suspend(pa_card *c, bool suspend, pa_suspend_cause_t cause) {
+ }
+
+ static int card_message_handler(const char *object_path, const char *message, const pa_json_object *parameters, char **response, void *userdata) {
+- pa_card *c;
++ pa_card *c = userdata;
+ char *message_handler_path;
+
+- pa_assert(c = (pa_card *) userdata);
++ pa_assert(c);
+ pa_assert(message);
+ pa_assert(response);
+
+diff --git a/src/pulsecore/core.c b/src/pulsecore/core.c
+index 174d0650e..132f08bbb 100644
+--- a/src/pulsecore/core.c
++++ b/src/pulsecore/core.c
+@@ -86,9 +86,9 @@ static char *message_handler_list(pa_core *c) {
+ }
+
+ static int core_message_handler(const char *object_path, const char *message, const pa_json_object *parameters, char **response, void *userdata) {
+- pa_core *c;
++ pa_core *c = userdata;
+
+- pa_assert(c = (pa_core *) userdata);
++ pa_assert(c);
+ pa_assert(message);
+ pa_assert(response);
+ pa_assert(pa_safe_streq(object_path, "/core"));
+diff --git a/src/pulsecore/dbus-util.c b/src/pulsecore/dbus-util.c
+index 7d550204e..466a882d8 100644
+--- a/src/pulsecore/dbus-util.c
++++ b/src/pulsecore/dbus-util.c
+@@ -737,7 +737,7 @@ pa_proplist *pa_dbus_get_proplist_arg(DBusConnection *c, DBusMessage *msg, DBusM
+ pa_assert(msg);
+ pa_assert(iter);
+
+- pa_assert(signature = dbus_message_iter_get_signature(iter));
++ pa_assert_se(signature = dbus_message_iter_get_signature(iter));
+ pa_assert_se(pa_streq(signature, "a{say}"));
+
+ dbus_free(signature);
+--
+GitLab
+
diff --git a/srcpkgs/pulseaudio/template b/srcpkgs/pulseaudio/template
index f1f88d7fb08a..685154e8c0e1 100644
--- a/srcpkgs/pulseaudio/template
+++ b/srcpkgs/pulseaudio/template
@@ -1,7 +1,7 @@
# Template file for 'pulseaudio'
pkgname=pulseaudio
version=15.0
-revision=2
+revision=3
build_style=meson
configure_args="-Djack=enabled -Dlirc=disabled -Dhal-compat=false -Dorc=enabled
-Dgtk=disabled -Dsystemd=disabled -Dwebrtc-aec=enabled
From 74b3de8754a38f5e1a7680c3d4ac5a85b0983464 Mon Sep 17 00:00:00 2001
From: Michal Vasilek <michal@vasilek.cz>
Date: Tue, 28 Sep 2021 20:33:20 +0200
Subject: [PATCH 2/2] pavucontrol: update to 5.0.
This update was previously reverted because it was segfaulting
pulseaudio, but this has been fixed.
---
.../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 <fsateler@gmail.com>
-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<Gtk::Builder>
- 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 @@
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
-- <object class="GtkTable" id="encodingSelect">
-+ <object class="GtkGrid" id="encodingSelect">
- <property name="can_focus">False</property>
-- <property name="n_rows">2</property>
-- <property name="n_columns">3</property>
-+ <property name="row_homogeneous">True</property>
-+ <property name="column_homogeneous">True</property>
- <child>
- <object class="GtkCheckButton" id="encodingFormatPCM">
- <property name="label" translatable="yes">PCM</property>
-@@ -439,6 +439,10 @@
- <property name="active">True</property>
- <property name="draw_indicator">True</property>
- </object>
-+ <packing>
-+ <property name="left_attach">0</property>
-+ <property name="top_attach">0</property>
-+ </packing>
- </child>
- <child>
- <object class="GtkCheckButton" id="encodingFormatAC3">
-@@ -450,7 +454,7 @@
- </object>
- <packing>
- <property name="left_attach">1</property>
-- <property name="right_attach">2</property>
-+ <property name="top_attach">0</property>
- </packing>
- </child>
- <child>
-@@ -462,8 +466,8 @@
- <property name="draw_indicator">True</property>
- </object>
- <packing>
-- <property name="top_attach">1</property>
-- <property name="bottom_attach">2</property>
-+ <property name="left_attach">2</property>
-+ <property name="top_attach">0</property>
- </packing>
- </child>
- <child>
-@@ -475,8 +479,8 @@
- <property name="draw_indicator">True</property>
- </object>
- <packing>
-- <property name="left_attach">2</property>
-- <property name="right_attach">3</property>
-+ <property name="left_attach">0</property>
-+ <property name="top_attach">1</property>
- </packing>
- </child>
- <child>
-@@ -489,9 +493,7 @@
- </object>
- <packing>
- <property name="left_attach">1</property>
-- <property name="right_attach">2</property>
- <property name="top_attach">1</property>
-- <property name="bottom_attach">2</property>
- </packing>
- </child>
- <child>
-@@ -504,9 +506,7 @@
- </object>
- <packing>
- <property name="left_attach">2</property>
-- <property name="right_attach">3</property>
- <property name="top_attach">1</property>
-- <property name="bottom_attach">2</property>
- </packing>
- </child>
- </object>
-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..dfd14580be52 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 <orphan@voidlinux.org>"
license="GPL-2.0-or-later"
homepage="https://freedesktop.org/software/pulseaudio/pavucontrol/"
-distfiles="${homepage}/${pkgname}-${version}.tar.xz"
-checksum=8fc45bac9722aefa6f022999cbb76242d143c31b314e2dbb38f034f4069d14e2
+distfiles="${FREEDESKTOP_SITE}/pulseaudio/pavucontrol/pavucontrol-${version}.tar.xz"
+checksum=ce2b72c3b5f1a70ad0df19dd81750f9455bd20870d1d3a36d20536af2e8f4e7a
next prev parent reply other threads:[~2021-10-01 21:01 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-09-28 18:39 [PR PATCH] " paper42
2021-09-28 18:44 ` [PR PATCH] [Updated] " paper42
2021-09-28 19:40 ` anddam
2021-09-28 20:01 ` q66
2021-09-28 20:56 ` ericonr
2021-09-28 21:05 ` ericonr
2021-09-28 21:07 ` ericonr
2021-09-29 7:06 ` [PR PATCH] [Updated] " paper42
2021-09-29 7:08 ` paper42
2021-09-29 17:34 ` anddam
2021-09-30 8:37 ` i-garrison
2021-09-30 11:40 ` q66
2021-10-01 20:59 ` [PR PATCH] [Updated] " paper42
2021-10-01 21:00 ` paper42
2021-10-01 21:01 ` paper42 [this message]
2021-10-12 21:25 ` [PR PATCH] [Merged]: pulseaudio: fix segfault on list-handlers, " paper42
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20211001210140.p-lnwC8IgDMwHlZM7C1TGVXKbgpdPQLcytUDi0NsBhQ@z \
--to=paper42@users.noreply.github.com \
--cc=ml@inbox.vuxu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).