diff --git a/.gitignore b/.gitignore index e69de29..9210249 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1,5 @@ +pavucontrol-0.9.10.tar.gz +/pavucontrol-1.0.tar.xz +/pavucontrol-2.0.tar.xz +/pavucontrol-3.0.tar.xz +/pavucontrol-4.0.tar.xz diff --git a/31.patch b/31.patch new file mode 100644 index 0000000..d790dac --- /dev/null +++ b/31.patch @@ -0,0 +1,333 @@ +From 9c4870b066999248b679b518f43b19a2065cdf40 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 | 25 +++++++++++++------------ + src/sinkwidget.h | 2 +- + src/streamwidget.cc | 2 +- + 10 files changed, 47 insertions(+), 35 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 33514b2..d63bb39 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -41,7 +41,7 @@ AC_TYPE_SIGNAL + AC_HEADER_STDC + AX_CXX_COMPILE_STDCXX_11 + +-PKG_CHECK_MODULES(GUILIBS, [ gtkmm-3.0 >= 3.0 sigc++-2.0 libcanberra-gtk3 >= 0.16 ]) ++PKG_CHECK_MODULES(GUILIBS, [ gtkmm-3.0 >= 3.22 sigc++-2.0 libcanberra-gtk3 >= 0.16 ]) + AC_SUBST(GUILIBS_CFLAGS) + AC_SUBST(GUILIBS_LIBS) + +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 09dc783..bda5d2e 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); +@@ -221,7 +221,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 e8520ec..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..2ce95b0 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 fe6c635..ef71204 100644 +--- a/src/pavucontrol.glade ++++ b/src/pavucontrol.glade +@@ -1,4 +1,5 @@ + ++ + + + +@@ -425,10 +426,10 @@ + True + False + +- ++ + False +- 2 +- 3 ++ True ++ True + + + PCM +@@ -439,6 +440,10 @@ + True + True + ++ ++ 0 ++ 0 ++ + + + +@@ -450,7 +455,7 @@ + + + 1 +- 2 ++ 0 + + + +@@ -462,8 +467,8 @@ + True + + +- 1 +- 2 ++ 2 ++ 0 + + + +@@ -475,8 +480,8 @@ + True + + +- 2 +- 3 ++ 0 ++ 1 + + + +@@ -489,9 +494,7 @@ + + + 1 +- 2 + 1 +- 2 + + + +@@ -504,9 +507,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; +-- +2.26.2 + diff --git a/pavucontrol.spec b/pavucontrol.spec new file mode 100644 index 0000000..bcc2109 --- /dev/null +++ b/pavucontrol.spec @@ -0,0 +1,250 @@ +Name: pavucontrol +Version: 4.0 +Release: 5%{?dist} +Summary: Volume control for PulseAudio + +License: GPLv2+ +URL: http://freedesktop.org/software/pulseaudio/%{name} +Source0: http://freedesktop.org/software/pulseaudio/%{name}/%{name}-%{version}.tar.xz +Patch0: 31.patch + +BuildRequires: gcc-c++ +BuildRequires: pulseaudio-libs-devel >= 3.0 +BuildRequires: gtkmm30-devel +BuildRequires: libsigc++20-devel lynx +BuildRequires: desktop-file-utils +BuildRequires: libcanberra-devel +BuildRequires: intltool + +%description +PulseAudio Volume Control (pavucontrol) is a simple GTK based volume control +tool ("mixer") for the PulseAudio sound server. In contrast to classic mixer +tools this one allows you to control both the volume of hardware devices and +of each playback stream separately. + +%prep +%autosetup -p1 + +%build +%configure \ + --disable-silent-rules + +%make_build V=1 + +%install +%make_install V=1 + +rm $RPM_BUILD_ROOT/usr/share/doc/pavucontrol/README +rm $RPM_BUILD_ROOT/usr/share/doc/pavucontrol/README.html +rm $RPM_BUILD_ROOT/usr/share/doc/pavucontrol/style.css + +%find_lang %{name} + +%check +desktop-file-validate $RPM_BUILD_ROOT%{_datadir}/applications/pavucontrol.desktop + +%files -f %{name}.lang +%license LICENSE +%doc doc/README +%{_bindir}/pavucontrol +%{_datadir}/pavucontrol +%{_datadir}/applications/pavucontrol.desktop + +%changelog +* Tue Jul 28 2020 Fedora Release Engineering - 4.0-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Sat Jun 13 2020 Julian Sikorski - 4.0-4 +- Fix crash on Ctrl-Q using a patch from upstream gitlab (RH #1725150) + +* Wed Jan 29 2020 Fedora Release Engineering - 4.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Fri Jul 26 2019 Fedora Release Engineering - 4.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Tue Mar 05 2019 Kalev Lember - 4.0-1 +- Update to 4.0 + +* Fri Feb 01 2019 Fedora Release Engineering - 3.0-14 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Fri Jul 13 2018 Fedora Release Engineering - 3.0-13 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Wed Mar 07 2018 Rex Dieter - 3.0-12 +- BR: gcc-c++ +- .spec cosmetics +- %%build: --disable-silent-rules +- use %%make_build %%make_install + +* Thu Feb 08 2018 Fedora Release Engineering - 3.0-11 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Thu Aug 03 2017 Fedora Release Engineering - 3.0-10 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Thu Jul 27 2017 Fedora Release Engineering - 3.0-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Mon May 15 2017 Fedora Release Engineering - 3.0-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_27_Mass_Rebuild + +* Sat Feb 11 2017 Fedora Release Engineering - 3.0-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Thu Feb 04 2016 Fedora Release Engineering - 3.0-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Wed Aug 19 2015 Kalev Lember - 3.0-5 +- Patch to work with the default icon theme (bug 1249198) + +* Sat Aug 01 2015 Julian Sikorski - 3.0-4 +- Added gnome-icon-theme-legacy to Requires (bug 1249198) + +* Thu Jun 18 2015 Fedora Release Engineering - 3.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Sat May 02 2015 Kalev Lember - 3.0-2 +- Rebuilt for GCC 5 C++11 ABI change + +* Tue Mar 24 2015 Kalev Lember - 3.0-1 +- Update to 3.0 +- Use license macro for the LICENCE file +- Use desktop-file-validate instead of desktop-file-install + +* Sat Feb 28 2015 Kevin Fenzi 2.0-10 +- Rebuild for new gcc + +* Sat Feb 21 2015 Till Maas - 2.0-9 +- Rebuilt for Fedora 23 Change + https://fedoraproject.org/wiki/Changes/Harden_all_packages_with_position-independent_code + +* Thu Aug 28 2014 Hans de Goede - 2.0-8 +- Add a patch fixing various crashes due to referencing freed memory (#1133339) +- Cherry-pick some other fixes from upstream git + +* Sun Aug 17 2014 Fedora Release Engineering - 2.0-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Fri Jun 06 2014 Fedora Release Engineering - 2.0-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Thu May 01 2014 Kalev Lember - 2.0-5 +- Drop obsolete libglademm24-devel build dep + +* Tue Nov 12 2013 Julian Sikorski - 2.0-4 +- Added support for AAC passthrough + +* Wed Oct 23 2013 Bruno Wolff III - 2.0-3 +- Rebuild seems to fix segfaulting issue (bz 1021118) + +* Sat Aug 03 2013 Fedora Release Engineering - 2.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Sat Mar 09 2013 Julian Sikorski - 2.0-1 +- Updated to 2.0 +- Made the make calls verbose +- Dropped explicit pulsaudio-libs dependency +- Updated the version in the pulseaudio-libs-devel BR + +* Thu Feb 14 2013 Fedora Release Engineering - 1.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Mon Sep 03 2012 Jonathan Steffan - 1.0-2 +- Merge in patch from BZ#588724 + +* Mon Sep 03 2012 Julian Sikorski - 1.0-1 +- Updated to 1.0 +- Switched to .xz sources +- Dropped obsolete Group, Buildroot, %%clean and %%defattr +- Updated Source0 and URL +- Switched to gtk3 + +* Fri Jul 20 2012 Fedora Release Engineering - 0.9.10-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Fri Jan 13 2012 Fedora Release Engineering - 0.9.10-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Tue Feb 08 2011 Fedora Release Engineering - 0.9.10-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Wed Oct 14 2009 Lennart Poettering 0.9.10-1 +- New upstream 0.9.10 + +* Thu Sep 10 2009 Lennart Poettering 0.9.9-1 +- Final 0.9.9 + +* Sat Jul 25 2009 Fedora Release Engineering - 0.9.9-0.test1.1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Thu Jul 2 2009 Lennart Poettering 0.9.9-1 +- Preview of upcoming 0.9.9 + +* Mon Apr 13 2009 Lennart Poettering 0.9.8-1 +- New upstream release 0.9.8 + +* Fri Apr 10 2009 Lennart Poettering 0.9.7-6 +- Third preview of upcoming 0.9.8 + +* Thu Mar 5 2009 Lennart Poettering 0.9.7-5 +- Second preview of upcoming 0.9.8 + +* Wed Feb 25 2009 Lennart Poettering 0.9.7-4 +- Preview of upcoming 0.9.8 + +* Thu Oct 9 2008 Matthias Clasen 0.9.7-3 +- Handle locales properly + +* Tue Sep 9 2008 Lennart Poettering 0.9.7-2 +- Add intltool to deps + +* Tue Sep 9 2008 Lennart Poettering 0.9.7-1 +- Update to 0.9.7 + +* Tue Jul 15 2008 Lennart Poettering 0.9.7-0.1.git20080715 +- Update from GIT snapshot + +* Fri Mar 28 2008 Lennart Poettering 0.9.6-1 +- Update to 0.9.6 + +* Tue Feb 19 2008 Fedora Release Engineering - 0.9.5-2 +- Autorebuild for GCC 4.3 + +* Wed Nov 28 2007 Julian Sikorski 0.9.5-1 +- Update to 0.9.5 + +* Tue Sep 25 2007 Lennart Poettering 0.9.5-0.4.svn20070925 +- Update from SVN + +* Wed Sep 5 2007 Lennart Poettering 0.9.5-0.3.svn20070905 +- Add versioned dependency on pulseaudio-libs + +* Wed Sep 5 2007 Lennart Poettering 0.9.5-0.2.svn20070905 +- Update from SVN snapshot + +* Thu Aug 16 2007 Lennart Poettering 0.9.5-0.1.svn20070816 +- Update from SVN snapshot + +* Sat Sep 9 2006 Pierre Ossman 0.9.4-3 +- Spec file cleanup. + +* Sat Sep 9 2006 Pierre Ossman 0.9.4-2 +- Add BuildRequires for desktop-file-utils. + +* Fri Sep 8 2006 Pierre Ossman 0.9.4-1 +- Update to 0.9.4 +- Fix installation of desktop file. + +* Sun Aug 20 2006 Pierre Ossman 0.9.3-1 +- Update to 0.9.3 + +* Sun Jul 9 2006 Pierre Ossman 0.9.2-1 +- Update to 0.9.2 + +* Thu Jun 8 2006 Pierre Ossman 0.9.1-1 +- Update to 0.9.1 + +* Mon May 29 2006 Pierre Ossman 0.9.0-1 +- Initial package for Fedora Extras diff --git a/sources b/sources new file mode 100644 index 0000000..d997631 --- /dev/null +++ b/sources @@ -0,0 +1 @@ +SHA512 (pavucontrol-4.0.tar.xz) = eaea303c46ddb36733aed88c8a603907d70e4539c345d8acec23527d3306ee21ae630c0508bdab6ae52cbc2f1eb8fc4b212abda72876dc92e83fba7ceb623be2