From 4f2d7949f03e1c198bc888f2d05f421d35c57e21 Mon Sep 17 00:00:00 2001 From: V3n3RiX Date: Mon, 9 Oct 2017 18:53:29 +0100 Subject: reinit the tree, so we can have metadata --- media-sound/pavucontrol/Manifest | 8 + .../pavucontrol-2.0-fix-startup-crashes.patch | 188 +++++++++++++++++++++ media-sound/pavucontrol/metadata.xml | 8 + media-sound/pavucontrol/pavucontrol-2.0-r1.ebuild | 43 +++++ media-sound/pavucontrol/pavucontrol-3.0.ebuild | 38 +++++ 5 files changed, 285 insertions(+) create mode 100644 media-sound/pavucontrol/Manifest create mode 100644 media-sound/pavucontrol/files/pavucontrol-2.0-fix-startup-crashes.patch create mode 100644 media-sound/pavucontrol/metadata.xml create mode 100644 media-sound/pavucontrol/pavucontrol-2.0-r1.ebuild create mode 100644 media-sound/pavucontrol/pavucontrol-3.0.ebuild (limited to 'media-sound/pavucontrol') 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 +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 + +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 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), "%s", 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 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 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 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 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 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), "%s", 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 @@ + + + + + sound@gentoo.org + Gentoo Sound project + + 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) +} -- cgit v1.2.3