summaryrefslogtreecommitdiff
path: root/media-sound/pavucontrol
diff options
context:
space:
mode:
authorV3n3RiX <venerix@redcorelinux.org>2017-10-09 18:53:29 +0100
committerV3n3RiX <venerix@redcorelinux.org>2017-10-09 18:53:29 +0100
commit4f2d7949f03e1c198bc888f2d05f421d35c57e21 (patch)
treeba5f07bf3f9d22d82e54a462313f5d244036c768 /media-sound/pavucontrol
reinit the tree, so we can have metadata
Diffstat (limited to 'media-sound/pavucontrol')
-rw-r--r--media-sound/pavucontrol/Manifest8
-rw-r--r--media-sound/pavucontrol/files/pavucontrol-2.0-fix-startup-crashes.patch188
-rw-r--r--media-sound/pavucontrol/metadata.xml8
-rw-r--r--media-sound/pavucontrol/pavucontrol-2.0-r1.ebuild43
-rw-r--r--media-sound/pavucontrol/pavucontrol-3.0.ebuild38
5 files changed, 285 insertions, 0 deletions
diff --git a/media-sound/pavucontrol/Manifest b/media-sound/pavucontrol/Manifest
new file mode 100644
index 000000000000..05c2004cb361
--- /dev/null
+++ b/media-sound/pavucontrol/Manifest
@@ -0,0 +1,8 @@
+AUX pavucontrol-2.0-fix-startup-crashes.patch 7437 SHA256 7502d564db65c83b4def1bb59c4cc143f615cb96da36e84a3d18604df1b90467 SHA512 f5cfdc8731867bcda61a38ccd30a91b2dc3e28106bae7300254957e6e1f8fd8806322c9bd90b7bd2f269aa6190203c1b9f545c18bd5b3f11c3f2d6983f114aac WHIRLPOOL cd6eaf1e3e0dc57e1db5326a148e517c08fe7fd2e379b8647cbfffc341f33c8ae2d66528ecd75d2d55dc2dd3b8d54e50b97dbf854849021c54c66ceee25197aa
+DIST pavucontrol-2.0.tar.xz 151560 SHA256 22f29dd81b4a1a34ec7bffe9b027aff2a37fc76ccded4539d43a8c126a39470b SHA512 2b5f83f79cf6d7ce94bd836278274acb09824af389f5a7ad7d3977db743d8f9c5def78d8e9dea901a7e05355cfebb060f513cf01997baf546fd2dd2ada0513b1 WHIRLPOOL f85b60363ea30aee976e4e704bddf607b4e18ea9f9041d63acd0dc36183e103435f37c70e3b55b6327b7b1c7291c898b8167742cbcc7c47ebcd83a10f790d33c
+DIST pavucontrol-3.0.tar.xz 145092 SHA256 b3d2ea5a25fc88dcee80c396014f72df1b4742f8cfbbc5349c39d64a0d338890 SHA512 3562fc50e5f60c6b6280c2d524e13cf44114bf481e5ec98b8714c7c2f162d0332179ebcf4c5a78d86f511de857bdc3aa7415e1548e0c10d4582b5958c4cacae9 WHIRLPOOL f743b900985bb2eabb2a22e0ac3f070cb6e8a3ee7373598b101c6b0522546349e85e89e30859b394a8cfd1d6b6ef5dafdc7a630cfae2f77174509780471af4a3
+EBUILD pavucontrol-2.0-r1.ebuild 942 SHA256 3bb194d3d72cb5cdd44dfcd05d4a283dda021480b586a2a0de6dc441b2fde319 SHA512 ed88a58947b6097d1aa2ea15ff121ea4cc3fb57a66e8ebdec9fa159bfe5c30c3711e763f47ea24aecf67b72cb578cbaea7e01714100049913699d22493b7f377 WHIRLPOOL faea94df27011a1c2ae9230c82059038c3ee89d04b0f5dc49d2b3fa047a7e3128465a7013d0b9e755c9bb8d2503a807341040d17b77ea7b4afc04371bd1cb62a
+EBUILD pavucontrol-3.0.ebuild 874 SHA256 1de0ce60d6ad7fa3118a5a14d8fbb46207874217c4bd200782f6985fbb403d11 SHA512 375fb354831c40b2cb4cbdc506b8f34cd378bb4d4e1481c9f173b10be248cb73629864765ee490b73ded942039ac1c9e21c5d283a1e1a2a3d70c2f27ad80b9fd WHIRLPOOL 488be7112df00819edec48a7aaa290feb5291dbc474c4822cbb261ace35bbbc87824a2486e9385656f945bd0fb7a3d6801bfb9f5073f452204d96b7235df0f1f
+MISC ChangeLog 4614 SHA256 79861cd8bcce11e6eb5a8cd996ee15a03c241f4750c74f5b617b19be0654c7e7 SHA512 8ab73f3a8d2e377775aede0c7d983966c8d44c00f380ea742faf43035125529268e49291cbda976d8c6784a837d9f452df1fca423deebcc56e71f370842ec976 WHIRLPOOL 98f9e10ec3220e6e7b2609ad7e1e3ad27b5edf930ed10ae40d4001aa0d07a407fca500be5085f2faea509733dad5ecf1752d28c621ce62ac545ff9246b17e6d9
+MISC ChangeLog-2015 7111 SHA256 89fed9db2e62b9df7f6257f7b961decdbfe4871b3f0940d451ea1c2592ccd8db SHA512 e25abb794fb18d7fb54f5e8a5b468336bca0a51853f455165c75f8bfbc16e3caf09dbb2d035258f6c4a083a61bf451d581e73782fe994e8d9786bb02b6b6d7ae WHIRLPOOL 2837aee2221b3b7611341ab5b83c26b99c7af1bec1bfa82d317f4ac1ffe6bb3c6888d96b2fbe85f7c6d1330bca6d5b2d65c96815fb49983191aa640d96ca2abc
+MISC metadata.xml 249 SHA256 a591aa91a9c413e7f7e24fd25b924ce2dfef686da8b4ce38bebb088ebfdba9db SHA512 9a100fb26586365eda99724330a03a512f4d0be18d39c3a195ba02c2fc841edeee99d22512acf5a058a3b978d3a74f4d963a5aff9aa343b6cb4086cdfefe6343 WHIRLPOOL ae5b0c583f3a07ed1ccf651b5b9c8d6c8c637fba2d505fc4b028ea60239fc0a84e37a169b5114f879712ae74f7f41960a2cc6b59e67cacc7f964b105b5fb8723
diff --git a/media-sound/pavucontrol/files/pavucontrol-2.0-fix-startup-crashes.patch b/media-sound/pavucontrol/files/pavucontrol-2.0-fix-startup-crashes.patch
new file mode 100644
index 000000000000..0689290b6229
--- /dev/null
+++ b/media-sound/pavucontrol/files/pavucontrol-2.0-fix-startup-crashes.patch
@@ -0,0 +1,188 @@
+From b2362f2223b1ecc0c92fac9d261d5684f33af06f Mon Sep 17 00:00:00 2001
+From: Hans de Goede <hdegoede@redhat.com>
+Date: Thu, 28 Aug 2014 12:58:05 +0200
+Subject: Reference the widget before returning it from ::create methods
+
+Widgets (unlike Windows and Dialogs) returned by Gtk::Builder::get_widget*
+start owned by the GtkBuilder object, the idea being that they will get
+added to a container before the scope of the GtkBuilder object ends, and it
+thus automatically gets destroyed.
+
+But in the various ::create methods in pavucontrol, a pointer to the widget
+gets returned, so that it can be added to a cointainer by the caller.
+However as soon as the ::create method exits the GtkBuilder object owning
+the widget, and thus also the widget gets destroyed, and we end up returning
+free-ed memory.
+
+This commit fixes this by making all ::create methods take a reference on
+the widget before returning it, and having all the callers unreference the
+widget after adding it to a container.
+
+https://bugs.freedesktop.org/show_bug.cgi?id=83144
+https://bugzilla.redhat.com/show_bug.cgi?id=1133339
+
+Signed-off-by: Hans de Goede <hdegoede@redhat.com>
+
+diff --git a/src/cardwidget.cc b/src/cardwidget.cc
+index c79ac6c..28c558d 100644
+--- a/src/cardwidget.cc
++++ b/src/cardwidget.cc
+@@ -45,6 +45,7 @@ CardWidget* CardWidget::create() {
+ CardWidget* w;
+ Glib::RefPtr<Gtk::Builder> x = Gtk::Builder::create_from_file(GLADE_FILE, "cardWidget");
+ x->get_widget_derived("cardWidget", w);
++ w->reference();
+ return w;
+ }
+
+diff --git a/src/channelwidget.cc b/src/channelwidget.cc
+index 6f59de2..fe94c11 100644
+--- a/src/channelwidget.cc
++++ b/src/channelwidget.cc
+@@ -53,6 +53,7 @@ ChannelWidget* ChannelWidget::create() {
+ x->add_from_file(GLADE_FILE, "adjustment1");
+ x->add_from_file(GLADE_FILE, "channelWidget");
+ x->get_widget_derived("channelWidget", w);
++ w->reference();
+ return w;
+ }
+
+diff --git a/src/devicewidget.cc b/src/devicewidget.cc
+index 1a148ee..813780f 100644
+--- a/src/devicewidget.cc
++++ b/src/devicewidget.cc
+@@ -89,6 +89,7 @@ void DeviceWidget::setChannelMap(const pa_channel_map &m, bool can_decibel) {
+ snprintf(text, sizeof(text), "<b>%s</b>", pa_channel_position_to_pretty_string(m.map[i]));
+ cw->channelLabel->set_markup(text);
+ channelsVBox->pack_start(*cw, false, false, 0);
++ cw->unreference();
+ }
+ channelWidgets[m.channels-1]->last = true;
+
+diff --git a/src/mainwindow.cc b/src/mainwindow.cc
+index 5a42318..5d205fb 100644
+--- a/src/mainwindow.cc
++++ b/src/mainwindow.cc
+@@ -300,6 +300,7 @@ void MainWindow::updateCard(const pa_card_info &info) {
+ else {
+ cardWidgets[info.index] = w = CardWidget::create();
+ cardsVBox->pack_start(*w, false, false, 0);
++ w->unreference();
+ w->index = info.index;
+ is_new = true;
+ }
+@@ -416,6 +417,7 @@ bool MainWindow::updateSink(const pa_sink_info &info) {
+ sinkWidgets[info.index] = w = SinkWidget::create(this);
+ w->setChannelMap(info.channel_map, !!(info.flags & PA_SINK_DECIBEL_VOLUME));
+ sinksVBox->pack_start(*w, false, false, 0);
++ w->unreference();
+ w->index = info.index;
+ w->monitor_index = info.monitor_source;
+ is_new = true;
+@@ -570,6 +572,7 @@ void MainWindow::updateSource(const pa_source_info &info) {
+ sourceWidgets[info.index] = w = SourceWidget::create(this);
+ w->setChannelMap(info.channel_map, !!(info.flags & PA_SOURCE_DECIBEL_VOLUME));
+ sourcesVBox->pack_start(*w, false, false, 0);
++ w->unreference();
+ w->index = info.index;
+ is_new = true;
+
+@@ -686,6 +689,7 @@ void MainWindow::updateSinkInput(const pa_sink_input_info &info) {
+ sinkInputWidgets[info.index] = w = SinkInputWidget::create(this);
+ w->setChannelMap(info.channel_map, true);
+ streamsVBox->pack_start(*w, false, false, 0);
++ w->unreference();
+ w->index = info.index;
+ w->clientIndex = info.client;
+ is_new = true;
+@@ -743,6 +747,7 @@ void MainWindow::updateSourceOutput(const pa_source_output_info &info) {
+ w->setChannelMap(info.channel_map, true);
+ #endif
+ recsVBox->pack_start(*w, false, false, 0);
++ w->unreference();
+ w->index = info.index;
+ w->clientIndex = info.client;
+ is_new = true;
+@@ -838,6 +843,7 @@ bool MainWindow::createEventRoleWidget() {
+
+ eventRoleWidget = RoleWidget::create();
+ streamsVBox->pack_start(*eventRoleWidget, false, false, 0);
++ eventRoleWidget->unreference();
+ eventRoleWidget->role = "sink-input-by-media-role:event";
+ eventRoleWidget->setChannelMap(cm, true);
+
+diff --git a/src/rolewidget.cc b/src/rolewidget.cc
+index fd3196c..db07f92 100644
+--- a/src/rolewidget.cc
++++ b/src/rolewidget.cc
+@@ -40,6 +40,7 @@ RoleWidget* RoleWidget::create() {
+ RoleWidget* w;
+ Glib::RefPtr<Gtk::Builder> x = Gtk::Builder::create_from_file(GLADE_FILE, "streamWidget");
+ x->get_widget_derived("streamWidget", w);
++ w->reference();
+ return w;
+ }
+
+diff --git a/src/sinkinputwidget.cc b/src/sinkinputwidget.cc
+index b88b718..5a0ba39 100644
+--- a/src/sinkinputwidget.cc
++++ b/src/sinkinputwidget.cc
+@@ -43,6 +43,7 @@ SinkInputWidget* SinkInputWidget::create(MainWindow* mainWindow) {
+ Glib::RefPtr<Gtk::Builder> x = Gtk::Builder::create_from_file(GLADE_FILE, "streamWidget");
+ x->get_widget_derived("streamWidget", w);
+ w->init(mainWindow);
++ w->reference();
+ return w;
+ }
+
+diff --git a/src/sinkwidget.cc b/src/sinkwidget.cc
+index 7f4902c..f682cf2 100644
+--- a/src/sinkwidget.cc
++++ b/src/sinkwidget.cc
+@@ -82,6 +82,7 @@ SinkWidget* SinkWidget::create(MainWindow* mainWindow) {
+ Glib::RefPtr<Gtk::Builder> x = Gtk::Builder::create_from_file(GLADE_FILE, "deviceWidget");
+ x->get_widget_derived("deviceWidget", w);
+ w->init(mainWindow, "sink");
++ w->reference();
+ return w;
+ }
+
+diff --git a/src/sourceoutputwidget.cc b/src/sourceoutputwidget.cc
+index 827c5a8..4d915b0 100644
+--- a/src/sourceoutputwidget.cc
++++ b/src/sourceoutputwidget.cc
+@@ -49,6 +49,7 @@ SourceOutputWidget* SourceOutputWidget::create(MainWindow* mainWindow) {
+ Glib::RefPtr<Gtk::Builder> x = Gtk::Builder::create_from_file(GLADE_FILE, "streamWidget");
+ x->get_widget_derived("streamWidget", w);
+ w->init(mainWindow);
++ w->reference();
+ return w;
+ }
+
+diff --git a/src/sourcewidget.cc b/src/sourcewidget.cc
+index 5e4ecf0..fde5333 100644
+--- a/src/sourcewidget.cc
++++ b/src/sourcewidget.cc
+@@ -35,6 +35,7 @@ SourceWidget* SourceWidget::create(MainWindow* mainWindow) {
+ Glib::RefPtr<Gtk::Builder> x = Gtk::Builder::create_from_file(GLADE_FILE, "deviceWidget");
+ x->get_widget_derived("deviceWidget", w);
+ w->init(mainWindow, "source");
++ w->reference();
+ return w;
+ }
+
+diff --git a/src/streamwidget.cc b/src/streamwidget.cc
+index 94363ec..e602cce 100644
+--- a/src/streamwidget.cc
++++ b/src/streamwidget.cc
+@@ -77,6 +77,7 @@ void StreamWidget::setChannelMap(const pa_channel_map &m, bool can_decibel) {
+ snprintf(text, sizeof(text), "<b>%s</b>", pa_channel_position_to_pretty_string(m.map[i]));
+ cw->channelLabel->set_markup(text);
+ channelsVBox->pack_start(*cw, false, false, 0);
++ cw->unreference();
+ }
+ channelWidgets[m.channels-1]->last = true;
+ channelWidgets[m.channels-1]->setBaseVolume(PA_VOLUME_NORM);
+--
+cgit v0.10.2
+
diff --git a/media-sound/pavucontrol/metadata.xml b/media-sound/pavucontrol/metadata.xml
new file mode 100644
index 000000000000..c870d0eef0ab
--- /dev/null
+++ b/media-sound/pavucontrol/metadata.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<maintainer type="project">
+ <email>sound@gentoo.org</email>
+ <name>Gentoo Sound project</name>
+</maintainer>
+</pkgmetadata>
diff --git a/media-sound/pavucontrol/pavucontrol-2.0-r1.ebuild b/media-sound/pavucontrol/pavucontrol-2.0-r1.ebuild
new file mode 100644
index 000000000000..de1f512e73de
--- /dev/null
+++ b/media-sound/pavucontrol/pavucontrol-2.0-r1.ebuild
@@ -0,0 +1,43 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+
+inherit eutils
+
+DESCRIPTION="Pulseaudio Volume Control, GTK based mixer for Pulseaudio"
+HOMEPAGE="https://freedesktop.org/software/pulseaudio/pavucontrol/"
+SRC_URI="https://freedesktop.org/software/pulseaudio/${PN}/${P}.tar.xz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="amd64 ppc ~ppc64 ~sparc x86 ~x86-fbsd"
+IUSE="nls"
+
+RDEPEND="
+ >=dev-cpp/gtkmm-3.0:3.0
+ >=dev-libs/libsigc++-2.2:2
+ >=media-libs/libcanberra-0.16[gtk3]
+ >=media-sound/pulseaudio-3[glib]
+ virtual/freedesktop-icon-theme
+"
+DEPEND="${RDEPEND}
+ virtual/pkgconfig
+ nls? (
+ dev-util/intltool
+ sys-devel/gettext
+ )
+"
+
+src_prepare() {
+ # Fix statup crashes (bug #530170)
+ epatch "${FILESDIR}"/${P}-fix-startup-crashes.patch
+}
+
+src_configure() {
+ econf \
+ --docdir=/usr/share/doc/${PF} \
+ --htmldir=/usr/share/doc/${PF}/html \
+ --disable-lynx \
+ $(use_enable nls)
+}
diff --git a/media-sound/pavucontrol/pavucontrol-3.0.ebuild b/media-sound/pavucontrol/pavucontrol-3.0.ebuild
new file mode 100644
index 000000000000..ff3dab09d8ee
--- /dev/null
+++ b/media-sound/pavucontrol/pavucontrol-3.0.ebuild
@@ -0,0 +1,38 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+inherit flag-o-matic
+
+DESCRIPTION="Pulseaudio Volume Control, GTK based mixer for Pulseaudio"
+HOMEPAGE="https://freedesktop.org/software/pulseaudio/pavucontrol/"
+SRC_URI="https://freedesktop.org/software/pulseaudio/${PN}/${P}.tar.xz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="amd64 ppc ~ppc64 ~sparc x86 ~x86-fbsd"
+IUSE="nls"
+
+RDEPEND="
+ >=dev-cpp/gtkmm-3.0:3.0
+ >=dev-libs/libsigc++-2.2:2
+ >=media-libs/libcanberra-0.16[gtk3]
+ >=media-sound/pulseaudio-3[glib]
+ virtual/freedesktop-icon-theme
+"
+DEPEND="${RDEPEND}
+ virtual/pkgconfig
+ nls? (
+ dev-util/intltool
+ sys-devel/gettext
+ )
+"
+
+src_configure() {
+ append-cxxflags -std=c++11 #567216
+ econf \
+ --docdir=/usr/share/doc/${PF} \
+ --htmldir=/usr/share/doc/${PF}/html \
+ --disable-lynx \
+ $(use_enable nls)
+}