Revert "pavucontrol: update to 5.0."
pavucontrol 5.0 crashes pulseaudio 15.0:
pulseaudio[40642]: segfault at 88 ip 00007fc6e44a828f sp 00007ffe80deedb0 error 4 in libpulsecore-15.0.so[7fc6e44a4000+3e000]
cc @ardadem
This reverts commit 20cea7aa68
.
This commit is contained in:
parent
3043b65320
commit
8a9bdd07c2
2 changed files with 324 additions and 5 deletions
319
srcpkgs/pavucontrol/patches/fix-segfault.patch
Normal file
319
srcpkgs/pavucontrol/patches/fix-segfault.patch
Normal file
|
@ -0,0 +1,319 @@
|
|||
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
|
||||
|
|
@ -1,14 +1,14 @@
|
|||
# Template file for 'pavucontrol'
|
||||
pkgname=pavucontrol
|
||||
version=5.0
|
||||
revision=1
|
||||
reverts="5.0_1"
|
||||
version=4.0
|
||||
revision=3
|
||||
build_style=gnu-configure
|
||||
hostmakedepends="pkg-config intltool"
|
||||
makedepends="gtkmm-devel libcanberra-devel gtk+3-devel
|
||||
pulseaudio-devel json-glib-devel"
|
||||
makedepends="gtkmm-devel libcanberra-devel gtk+3-devel pulseaudio-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=ce2b72c3b5f1a70ad0df19dd81750f9455bd20870d1d3a36d20536af2e8f4e7a
|
||||
checksum=8fc45bac9722aefa6f022999cbb76242d143c31b314e2dbb38f034f4069d14e2
|
||||
|
|
Loading…
Reference in a new issue