diff -Nru pavucontrol-2.0/debian/changelog pavucontrol-2.0/debian/changelog
--- pavucontrol-2.0/debian/changelog	2014-04-07 19:11:25.000000000 +0000
+++ pavucontrol-2.0/debian/changelog	2014-10-22 23:44:48.000000000 +0000
@@ -1,3 +1,14 @@
+pavucontrol (2.0-3) unstable; urgency=medium
+
+  * Backport patches from upstream that fix gtk/glade usage
+  * Handle IO errors when loading theme icon. Closes: #765725
+  * Drop patchsys-quilt: package is 3.0 (quilt)
+  * Drop README-updating.patch, remove README on clean to ensure rebuild
+  * Add myself to uploaders
+  * Bump standards version, no changes needed
+
+ -- Felipe Sateler <fsateler@debian.org>  Wed, 22 Oct 2014 20:44:36 -0300
+
 pavucontrol (2.0-2) unstable; urgency=medium
 
   [ Léo Cavaillé ]
diff -Nru pavucontrol-2.0/debian/control pavucontrol-2.0/debian/control
--- pavucontrol-2.0/debian/control	2014-04-07 19:11:25.000000000 +0000
+++ pavucontrol-2.0/debian/control	2014-10-22 23:44:48.000000000 +0000
@@ -2,7 +2,9 @@
 Section: sound
 Priority: optional
 Maintainer: Pulseaudio maintenance team <pkg-pulseaudio-devel@lists.alioth.debian.org>
-Uploaders: Sjoerd Simons <sjoerd@debian.org>, Léo Cavaillé <leo@cavaille.net>
+Uploaders: Sjoerd Simons <sjoerd@debian.org>,
+ Léo Cavaillé <leo@cavaille.net>,
+ Felipe Sateler <fsateler@debian.org>
 Build-Depends: debhelper (>= 5), cdbs, autotools-dev,
                libpulse-dev (>= 0.9.15),
                libgtkmm-3.0-dev,
@@ -13,7 +15,7 @@
                quilt,
                libcanberra-gtk3-dev (>= 0.16),
                intltool
-Standards-Version: 3.9.5
+Standards-Version: 3.9.6
 Vcs-Git: git://git.debian.org/git/pkg-pulseaudio/pavucontrol.git
 Vcs-Browser: http://git.debian.org/?p=pkg-pulseaudio/pavucontrol.git
 Homepage: http://0pointer.de/lennart/projects/pavucontrol/
diff -Nru pavucontrol-2.0/debian/patches/0002-README-updating.patch pavucontrol-2.0/debian/patches/0002-README-updating.patch
--- pavucontrol-2.0/debian/patches/0002-README-updating.patch	2014-04-07 19:11:25.000000000 +0000
+++ pavucontrol-2.0/debian/patches/0002-README-updating.patch	1970-01-01 00:00:00.000000000 +0000
@@ -1,437 +0,0 @@
---- a/README
-+++ b/README
-@@ -1,4 +1,6 @@
--                        PulseAudio Volume Control 0.99.2
-+
-+
-+                         PulseAudio Volume Control 2.0
- 
-    Copyright 2006-2009 Lennart Poettering, 2009-2011 Colin Guthrie
-    <mzcnihpbageby (at) 0pointer (dot) de>
-@@ -26,83 +28,91 @@
- 
- News
- 
-+   Fri Mar 8 2013:
-+
-+   [10]Version 2.0 released.
-+
-+   Tue Sep 27 2011:
-+
-+   [11]Version 1.0 released.
-+
-    Thu Sep 15 2011:
- 
--   [10]Version 0.99.2 (v1 RC2) released; digitial receiver UI.
-+   [12]Version 0.99.2 (v1 RC2) released; digitial receiver UI.
- 
-    Tue Aug 2 2011:
- 
--   [11]Version 0.99.1 (v1 RC1) released; gtk3 support; source output
-+   [13]Version 0.99.1 (v1 RC1) released; gtk3 support; source output
-    volume support; key command handling; bugfixes.
- 
-    Wed Oct 14 2009:
- 
--   [12]Version 0.9.10 released; minor fixes; translation updates.
-+   [14]Version 0.9.10 released; minor fixes; translation updates.
- 
-    Thu Sep 10 2009:
- 
--   [13]Version 0.9.9 released; allow configuring device ports; various
-+   [15]Version 0.9.9 released; allow configuring device ports; various
-    updates.
- 
-    Mon Apr 13 2009:
- 
--   [14]Version 0.9.8 released; allow configuring card profiles; various
-+   [16]Version 0.9.8 released; allow configuring card profiles; various
-    updates.
- 
-    Tue Sep 9 2008:
- 
--   [15]Version 0.9.7 released; show volume meter for each stream and
-+   [17]Version 0.9.7 released; show volume meter for each stream and
-    device.
- 
-    Fri Mar 28 2008:
- 
--   [16]Version 0.9.6 released; draw radio buttons instead of check boxes
-+   [18]Version 0.9.6 released; draw radio buttons instead of check boxes
-    when moving streams; fix crasher when connecting to a PA server that
-    has no default sink/source configured.
- 
-    Tue Oct 30 2007:
- 
--   [17]Version 0.9.5 released; rework UI; add context menu option to kill
-+   [19]Version 0.9.5 released; rework UI; add context menu option to kill
-    a playback stream; add context menu option to select the default
-    device; use prettier channel names; filter non-application streams by
-    default; support muting streams
- 
-    Sat Aug 26 2006:
- 
--   [18]Version 0.9.4 released; add the ability to move a stream to another
-+   [20]Version 0.9.4 released; add the ability to move a stream to another
-    device while it is playing; limit the list of sinks/sources shown by
-    their type; other cleanups
- 
-    Mon Jul 24 2006:
- 
--   [19]Version 0.9.3 released; show client names only if they are set
-+   [21]Version 0.9.3 released; show client names only if they are set
- 
-    Sat Jul 8 2006:
- 
--   [20]Version 0.9.2 released; update for [21]PulseAudio 0.9.2
-+   [22]Version 0.9.2 released; update for [23]PulseAudio 0.9.2
- 
-    Fri Jun 2 2006:
- 
--   [22]Version 0.9.1 released; add a .desktop file; update icons
-+   [24]Version 0.9.1 released; add a .desktop file; update icons
-    everywhere
- 
-    Sat May 27 2006:
- 
--   [23]Version 0.9.0 released; update for Polypaudio 0.9.0; show client
-+   [25]Version 0.9.0 released; update for Polypaudio 0.9.0; show client
-    name of playback streams; make volume slider more responsive
- 
-    Fri Apr 21 2006:
- 
--   [24]Version 0.8 released; initial release
-+   [26]Version 0.8 released; initial release
- 
- Overview
- 
-    PulseAudio Volume Control (pavucontrol) is a simple GTK based volume
--   control tool ("mixer") for the [25]PulseAudio sound server. In contrast
-+   control tool ("mixer") for the [27]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.
- 
--   Everybody loves [26]screenshots.
-+   Everybody loves [28]screenshots.
- 
- Current Status
- 
-@@ -121,9 +131,9 @@
-    Unix versions) since it uses GNU autoconf for source code
-    configuration.
- 
--   pavucontrol requires [27]gtkmm and glademmm installed.
-+   pavucontrol requires [29]gtkmm and glademmm installed.
- 
--   Obviously pavucontrol requires an installation of [28]PulseAudio
-+   Obviously pavucontrol requires an installation of [30]PulseAudio
-    (version 0.9.16).
- 
- Installation
-@@ -140,12 +150,12 @@
- Download
- 
-    The newest release is always available from
--   [29]http://freedesktop.org/software/pulseaudio/pavucontrol/
-+   [31]http://freedesktop.org/software/pulseaudio/pavucontrol/
- 
--   The current release is [30]0.99.2
-+   The current release is [32]2.0
- 
--   Get pavucontrol's development sources from the [31]GIT [32]repository
--   ([33]gitweb):
-+   Get pavucontrol's development sources from the [33]GIT [34]repository
-+   ([35]gitweb):
- git clone git://git.0pointer.de/pavucontrol
-      __________________________________________________________________
- 
-@@ -155,36 +165,38 @@
- 
- References
- 
--   1. README#license
--   2. README#news
--   3. README#overview
--   4. README#status
--   5. README#documentation
--   6. README#requirements
--   7. README#installation
--   8. README#acks
--   9. README#download
--  10. http://freedesktop.org/software/pulseaudio/pavucontrol/pavucontrol-0.99.2.tar.gz
--  11. http://freedesktop.org/software/pulseaudio/pavucontrol/pavucontrol-0.99.1.tar.gz
--  12. http://freedesktop.org/software/pulseaudio/pavucontrol/pavucontrol-0.9.10.tar.gz
--  13. http://freedesktop.org/software/pulseaudio/pavucontrol/pavucontrol-0.9.9.tar.gz
--  14. http://freedesktop.org/software/pulseaudio/pavucontrol/pavucontrol-0.9.8.tar.gz
--  15. http://freedesktop.org/software/pulseaudio/pavucontrol/pavucontrol-0.9.7.tar.gz
--  16. http://freedesktop.org/software/pulseaudio/pavucontrol/pavucontrol-0.9.6.tar.gz
--  17. http://freedesktop.org/software/pulseaudio/pavucontrol/pavucontrol-0.9.5.tar.gz
--  18. http://freedesktop.org/software/pulseaudio/pavucontrol/pavucontrol-0.9.4.tar.gz
--  19. http://freedesktop.org/software/pulseaudio/pavucontrol/pavucontrol-0.9.3.tar.gz
--  20. http://freedesktop.org/software/pulseaudio/pavucontrol/pavucontrol-0.9.2.tar.gz
--  21. http://pulseaudio.org/
--  22. http://freedesktop.org/software/pulseaudio/pavucontrol/pavucontrol-0.9.1.tar.gz
--  23. http://freedesktop.org/software/pulseaudio/pavucontrol/pavucontrol-0.9.0.tar.gz
--  24. http://freedesktop.org/software/pulseaudio/pavucontrol/pavucontrol-0.8.tar.gz
--  25. http://0pointer.de/lennart/projects/pulseaudio/
--  26. http://freedesktop.org/software/pulseaudio/pavucontrol//screenshot.png
--  27. http://gtkmm.sf.net/
--  28. http://pulseaudio.org/
--  29. http://freedesktop.org/software/pulseaudio/pavucontrol/
--  30. http://freedesktop.org/software/pulseaudio/pavucontrol/pavucontrol-0.99.2.tar.gz
--  31. http://git-scm.org/
--  32. git://git.0pointer.de/pavucontrol
--  33. http://git.0pointer.de/?p=pavucontrol.git
-+   1. README.html#license
-+   2. README.html#news
-+   3. README.html#overview
-+   4. README.html#status
-+   5. README.html#documentation
-+   6. README.html#requirements
-+   7. README.html#installation
-+   8. README.html#acks
-+   9. README.html#download
-+  10. http://freedesktop.org/software/pulseaudio/pavucontrol/pavucontrol-2.0.tar.xz
-+  11. http://freedesktop.org/software/pulseaudio/pavucontrol/pavucontrol-1.0.tar.xz
-+  12. http://freedesktop.org/software/pulseaudio/pavucontrol/pavucontrol-0.99.2.tar.gz
-+  13. http://freedesktop.org/software/pulseaudio/pavucontrol/pavucontrol-0.99.1.tar.gz
-+  14. http://freedesktop.org/software/pulseaudio/pavucontrol/pavucontrol-0.9.10.tar.gz
-+  15. http://freedesktop.org/software/pulseaudio/pavucontrol/pavucontrol-0.9.9.tar.gz
-+  16. http://freedesktop.org/software/pulseaudio/pavucontrol/pavucontrol-0.9.8.tar.gz
-+  17. http://freedesktop.org/software/pulseaudio/pavucontrol/pavucontrol-0.9.7.tar.gz
-+  18. http://freedesktop.org/software/pulseaudio/pavucontrol/pavucontrol-0.9.6.tar.gz
-+  19. http://freedesktop.org/software/pulseaudio/pavucontrol/pavucontrol-0.9.5.tar.gz
-+  20. http://freedesktop.org/software/pulseaudio/pavucontrol/pavucontrol-0.9.4.tar.gz
-+  21. http://freedesktop.org/software/pulseaudio/pavucontrol/pavucontrol-0.9.3.tar.gz
-+  22. http://freedesktop.org/software/pulseaudio/pavucontrol/pavucontrol-0.9.2.tar.gz
-+  23. http://pulseaudio.org/
-+  24. http://freedesktop.org/software/pulseaudio/pavucontrol/pavucontrol-0.9.1.tar.gz
-+  25. http://freedesktop.org/software/pulseaudio/pavucontrol/pavucontrol-0.9.0.tar.gz
-+  26. http://freedesktop.org/software/pulseaudio/pavucontrol/pavucontrol-0.8.tar.gz
-+  27. http://0pointer.de/lennart/projects/pulseaudio/
-+  28. http://freedesktop.org/software/pulseaudio/pavucontrol//screenshot.png
-+  29. http://gtkmm.sf.net/
-+  30. http://pulseaudio.org/
-+  31. http://freedesktop.org/software/pulseaudio/pavucontrol/
-+  32. http://freedesktop.org/software/pulseaudio/pavucontrol/pavucontrol-2.0.tar.gz
-+  33. http://git-scm.org/
-+  34. git://git.0pointer.de/pavucontrol
-+  35. http://git.0pointer.de/?p=pavucontrol.git
---- a/doc/README
-+++ b/doc/README
-@@ -1,4 +1,5 @@
--                        PulseAudio Volume Control 0.99.2
-+
-+                         PulseAudio Volume Control 2.0
- 
-    Copyright 2006-2009 Lennart Poettering, 2009-2011 Colin Guthrie
-    <mzcnihpbageby (at) 0pointer (dot) de>
-@@ -26,83 +27,91 @@
- 
- News
- 
-+   Fri Mar 8 2013:
-+
-+   [10]Version 2.0 released.
-+
-+   Tue Sep 27 2011:
-+
-+   [11]Version 1.0 released.
-+
-    Thu Sep 15 2011:
- 
--   [10]Version 0.99.2 (v1 RC2) released; digitial receiver UI.
-+   [12]Version 0.99.2 (v1 RC2) released; digitial receiver UI.
- 
-    Tue Aug 2 2011:
- 
--   [11]Version 0.99.1 (v1 RC1) released; gtk3 support; source output
-+   [13]Version 0.99.1 (v1 RC1) released; gtk3 support; source output
-    volume support; key command handling; bugfixes.
- 
-    Wed Oct 14 2009:
- 
--   [12]Version 0.9.10 released; minor fixes; translation updates.
-+   [14]Version 0.9.10 released; minor fixes; translation updates.
- 
-    Thu Sep 10 2009:
- 
--   [13]Version 0.9.9 released; allow configuring device ports; various
-+   [15]Version 0.9.9 released; allow configuring device ports; various
-    updates.
- 
-    Mon Apr 13 2009:
- 
--   [14]Version 0.9.8 released; allow configuring card profiles; various
-+   [16]Version 0.9.8 released; allow configuring card profiles; various
-    updates.
- 
-    Tue Sep 9 2008:
- 
--   [15]Version 0.9.7 released; show volume meter for each stream and
-+   [17]Version 0.9.7 released; show volume meter for each stream and
-    device.
- 
-    Fri Mar 28 2008:
- 
--   [16]Version 0.9.6 released; draw radio buttons instead of check boxes
-+   [18]Version 0.9.6 released; draw radio buttons instead of check boxes
-    when moving streams; fix crasher when connecting to a PA server that
-    has no default sink/source configured.
- 
-    Tue Oct 30 2007:
- 
--   [17]Version 0.9.5 released; rework UI; add context menu option to kill
-+   [19]Version 0.9.5 released; rework UI; add context menu option to kill
-    a playback stream; add context menu option to select the default
-    device; use prettier channel names; filter non-application streams by
-    default; support muting streams
- 
-    Sat Aug 26 2006:
- 
--   [18]Version 0.9.4 released; add the ability to move a stream to another
-+   [20]Version 0.9.4 released; add the ability to move a stream to another
-    device while it is playing; limit the list of sinks/sources shown by
-    their type; other cleanups
- 
-    Mon Jul 24 2006:
- 
--   [19]Version 0.9.3 released; show client names only if they are set
-+   [21]Version 0.9.3 released; show client names only if they are set
- 
-    Sat Jul 8 2006:
- 
--   [20]Version 0.9.2 released; update for [21]PulseAudio 0.9.2
-+   [22]Version 0.9.2 released; update for [23]PulseAudio 0.9.2
- 
-    Fri Jun 2 2006:
- 
--   [22]Version 0.9.1 released; add a .desktop file; update icons
-+   [24]Version 0.9.1 released; add a .desktop file; update icons
-    everywhere
- 
-    Sat May 27 2006:
- 
--   [23]Version 0.9.0 released; update for Polypaudio 0.9.0; show client
-+   [25]Version 0.9.0 released; update for Polypaudio 0.9.0; show client
-    name of playback streams; make volume slider more responsive
- 
-    Fri Apr 21 2006:
- 
--   [24]Version 0.8 released; initial release
-+   [26]Version 0.8 released; initial release
- 
- Overview
- 
-    PulseAudio Volume Control (pavucontrol) is a simple GTK based volume
--   control tool ("mixer") for the [25]PulseAudio sound server. In contrast
-+   control tool ("mixer") for the [27]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.
- 
--   Everybody loves [26]screenshots.
-+   Everybody loves [28]screenshots.
- 
- Current Status
- 
-@@ -121,9 +130,9 @@
-    Unix versions) since it uses GNU autoconf for source code
-    configuration.
- 
--   pavucontrol requires [27]gtkmm and glademmm installed.
-+   pavucontrol requires [29]gtkmm and glademmm installed.
- 
--   Obviously pavucontrol requires an installation of [28]PulseAudio
-+   Obviously pavucontrol requires an installation of [30]PulseAudio
-    (version 0.9.16).
- 
- Installation
-@@ -140,12 +149,12 @@
- Download
- 
-    The newest release is always available from
--   [29]http://freedesktop.org/software/pulseaudio/pavucontrol/
-+   [31]http://freedesktop.org/software/pulseaudio/pavucontrol/
- 
--   The current release is [30]0.99.2
-+   The current release is [32]2.0
- 
--   Get pavucontrol's development sources from the [31]GIT [32]repository
--   ([33]gitweb):
-+   Get pavucontrol's development sources from the [33]GIT [34]repository
-+   ([35]gitweb):
- git clone git://git.0pointer.de/pavucontrol
-      __________________________________________________________________
- 
-@@ -155,36 +164,38 @@
- 
- References
- 
--   1. README#license
--   2. README#news
--   3. README#overview
--   4. README#status
--   5. README#documentation
--   6. README#requirements
--   7. README#installation
--   8. README#acks
--   9. README#download
--  10. http://freedesktop.org/software/pulseaudio/pavucontrol/pavucontrol-0.99.2.tar.gz
--  11. http://freedesktop.org/software/pulseaudio/pavucontrol/pavucontrol-0.99.1.tar.gz
--  12. http://freedesktop.org/software/pulseaudio/pavucontrol/pavucontrol-0.9.10.tar.gz
--  13. http://freedesktop.org/software/pulseaudio/pavucontrol/pavucontrol-0.9.9.tar.gz
--  14. http://freedesktop.org/software/pulseaudio/pavucontrol/pavucontrol-0.9.8.tar.gz
--  15. http://freedesktop.org/software/pulseaudio/pavucontrol/pavucontrol-0.9.7.tar.gz
--  16. http://freedesktop.org/software/pulseaudio/pavucontrol/pavucontrol-0.9.6.tar.gz
--  17. http://freedesktop.org/software/pulseaudio/pavucontrol/pavucontrol-0.9.5.tar.gz
--  18. http://freedesktop.org/software/pulseaudio/pavucontrol/pavucontrol-0.9.4.tar.gz
--  19. http://freedesktop.org/software/pulseaudio/pavucontrol/pavucontrol-0.9.3.tar.gz
--  20. http://freedesktop.org/software/pulseaudio/pavucontrol/pavucontrol-0.9.2.tar.gz
--  21. http://pulseaudio.org/
--  22. http://freedesktop.org/software/pulseaudio/pavucontrol/pavucontrol-0.9.1.tar.gz
--  23. http://freedesktop.org/software/pulseaudio/pavucontrol/pavucontrol-0.9.0.tar.gz
--  24. http://freedesktop.org/software/pulseaudio/pavucontrol/pavucontrol-0.8.tar.gz
--  25. http://0pointer.de/lennart/projects/pulseaudio/
--  26. http://freedesktop.org/software/pulseaudio/pavucontrol//screenshot.png
--  27. http://gtkmm.sf.net/
--  28. http://pulseaudio.org/
--  29. http://freedesktop.org/software/pulseaudio/pavucontrol/
--  30. http://freedesktop.org/software/pulseaudio/pavucontrol/pavucontrol-0.99.2.tar.gz
--  31. http://git-scm.org/
--  32. git://git.0pointer.de/pavucontrol
--  33. http://git.0pointer.de/?p=pavucontrol.git
-+   1. README.html#license
-+   2. README.html#news
-+   3. README.html#overview
-+   4. README.html#status
-+   5. README.html#documentation
-+   6. README.html#requirements
-+   7. README.html#installation
-+   8. README.html#acks
-+   9. README.html#download
-+  10. http://freedesktop.org/software/pulseaudio/pavucontrol/pavucontrol-2.0.tar.xz
-+  11. http://freedesktop.org/software/pulseaudio/pavucontrol/pavucontrol-1.0.tar.xz
-+  12. http://freedesktop.org/software/pulseaudio/pavucontrol/pavucontrol-0.99.2.tar.gz
-+  13. http://freedesktop.org/software/pulseaudio/pavucontrol/pavucontrol-0.99.1.tar.gz
-+  14. http://freedesktop.org/software/pulseaudio/pavucontrol/pavucontrol-0.9.10.tar.gz
-+  15. http://freedesktop.org/software/pulseaudio/pavucontrol/pavucontrol-0.9.9.tar.gz
-+  16. http://freedesktop.org/software/pulseaudio/pavucontrol/pavucontrol-0.9.8.tar.gz
-+  17. http://freedesktop.org/software/pulseaudio/pavucontrol/pavucontrol-0.9.7.tar.gz
-+  18. http://freedesktop.org/software/pulseaudio/pavucontrol/pavucontrol-0.9.6.tar.gz
-+  19. http://freedesktop.org/software/pulseaudio/pavucontrol/pavucontrol-0.9.5.tar.gz
-+  20. http://freedesktop.org/software/pulseaudio/pavucontrol/pavucontrol-0.9.4.tar.gz
-+  21. http://freedesktop.org/software/pulseaudio/pavucontrol/pavucontrol-0.9.3.tar.gz
-+  22. http://freedesktop.org/software/pulseaudio/pavucontrol/pavucontrol-0.9.2.tar.gz
-+  23. http://pulseaudio.org/
-+  24. http://freedesktop.org/software/pulseaudio/pavucontrol/pavucontrol-0.9.1.tar.gz
-+  25. http://freedesktop.org/software/pulseaudio/pavucontrol/pavucontrol-0.9.0.tar.gz
-+  26. http://freedesktop.org/software/pulseaudio/pavucontrol/pavucontrol-0.8.tar.gz
-+  27. http://0pointer.de/lennart/projects/pulseaudio/
-+  28. http://freedesktop.org/software/pulseaudio/pavucontrol//screenshot.png
-+  29. http://gtkmm.sf.net/
-+  30. http://pulseaudio.org/
-+  31. http://freedesktop.org/software/pulseaudio/pavucontrol/
-+  32. http://freedesktop.org/software/pulseaudio/pavucontrol/pavucontrol-2.0.tar.gz
-+  33. http://git-scm.org/
-+  34. git://git.0pointer.de/pavucontrol
-+  35. http://git.0pointer.de/?p=pavucontrol.git
diff -Nru pavucontrol-2.0/debian/patches/0003-Reference-the-widget-before-returning-it-from-create.patch pavucontrol-2.0/debian/patches/0003-Reference-the-widget-before-returning-it-from-create.patch
--- pavucontrol-2.0/debian/patches/0003-Reference-the-widget-before-returning-it-from-create.patch	1970-01-01 00:00:00.000000000 +0000
+++ pavucontrol-2.0/debian/patches/0003-Reference-the-widget-before-returning-it-from-create.patch	2014-10-22 23:44:48.000000000 +0000
@@ -0,0 +1,196 @@
+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>
+---
+ src/cardwidget.cc         | 1 +
+ src/channelwidget.cc      | 1 +
+ src/devicewidget.cc       | 1 +
+ src/mainwindow.cc         | 6 ++++++
+ src/rolewidget.cc         | 1 +
+ src/sinkinputwidget.cc    | 1 +
+ src/sinkwidget.cc         | 1 +
+ src/sourceoutputwidget.cc | 1 +
+ src/sourcewidget.cc       | 1 +
+ src/streamwidget.cc       | 1 +
+ 10 files changed, 15 insertions(+)
+
+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 1c34ea6..2fb8095 100644
+--- a/src/devicewidget.cc
++++ b/src/devicewidget.cc
+@@ -84,6 +84,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 741af94..a67b15c 100644
+--- a/src/mainwindow.cc
++++ b/src/mainwindow.cc
+@@ -298,6 +298,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;
+     }
+@@ -414,6 +415,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;
+@@ -572,6 +574,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;
+ 
+@@ -687,6 +690,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;
+@@ -742,6 +746,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;
+@@ -835,6 +840,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 1726550..adfa2d9 100644
+--- a/src/sinkwidget.cc
++++ b/src/sinkwidget.cc
+@@ -70,6 +70,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);
diff -Nru pavucontrol-2.0/debian/patches/0004-Do-not-instantiate-cardwidget-devicewidget-and-rolew.patch pavucontrol-2.0/debian/patches/0004-Do-not-instantiate-cardwidget-devicewidget-and-rolew.patch
--- pavucontrol-2.0/debian/patches/0004-Do-not-instantiate-cardwidget-devicewidget-and-rolew.patch	1970-01-01 00:00:00.000000000 +0000
+++ pavucontrol-2.0/debian/patches/0004-Do-not-instantiate-cardwidget-devicewidget-and-rolew.patch	2014-10-22 23:44:48.000000000 +0000
@@ -0,0 +1,76 @@
+From: Hans de Goede <hdegoede@redhat.com>
+Date: Fri, 29 Aug 2014 09:42:04 +0200
+Subject: Do not instantiate cardwidget,
+ devicewidget and rolewidget with a type of EventBox
+
+RoleWidget::create contains:
+    x->get_widget_derived("streamWidget", w);
+
+But streamWidget is defined as following in the glade file:
+<object class="GtkEventBox" id="streamWidget">
+
+Where as RoleWidget is derived from [Minimal]StreamWidget, which is derived
+from Gtk::VBox, so this is clearly wrong.
+
+Adding:
+printf("rolewidget type: %s\n", g_type_name(G_TYPE_FROM_INSTANCE(w->gobj())));
+for debugging shows that this really leads to RoleWidget being instantiated
+as an EventBox (yet things still work due to sheer luck).
+
+This commit fixes this, by putting the streamWidget id at the right level of
+the hierarchy in the glade file (and likewise for cardWidget and deviceWidget).
+
+Signed-off-by: Hans de Goede <hdegoede@redhat.com>
+---
+ src/pavucontrol.glade | 12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/src/pavucontrol.glade b/src/pavucontrol.glade
+index 6defb3d..fd43217 100644
+--- a/src/pavucontrol.glade
++++ b/src/pavucontrol.glade
+@@ -12,12 +12,12 @@
+     <property name="can_focus">False</property>
+     <property name="title" translatable="yes">window1</property>
+     <child>
+-      <object class="GtkEventBox" id="cardWidget">
++      <object class="GtkEventBox" id="cardWidgetBox">
+         <property name="visible">True</property>
+         <property name="can_focus">False</property>
+         <property name="visible_window">False</property>
+         <child>
+-          <object class="GtkVBox" id="cardWidget1">
++          <object class="GtkVBox" id="cardWidget">
+             <property name="visible">True</property>
+             <property name="can_focus">False</property>
+             <child>
+@@ -202,12 +202,12 @@
+     <property name="can_focus">False</property>
+     <property name="title" translatable="yes">window1</property>
+     <child>
+-      <object class="GtkEventBox" id="deviceWidget">
++      <object class="GtkEventBox" id="deviceWidgetBox">
+         <property name="visible">True</property>
+         <property name="can_focus">False</property>
+         <property name="visible_window">False</property>
+         <child>
+-          <object class="GtkVBox" id="streamWidget2">
++          <object class="GtkVBox" id="deviceWidget">
+             <property name="visible">True</property>
+             <property name="can_focus">False</property>
+             <child>
+@@ -1316,12 +1316,12 @@
+     <property name="can_focus">False</property>
+     <property name="title" translatable="yes">window1</property>
+     <child>
+-      <object class="GtkEventBox" id="streamWidget">
++      <object class="GtkEventBox" id="streamWidgetBox">
+         <property name="visible">True</property>
+         <property name="can_focus">False</property>
+         <property name="visible_window">False</property>
+         <child>
+-          <object class="GtkVBox" id="streamWidget2">
++          <object class="GtkVBox" id="streamWidget">
+             <property name="visible">True</property>
+             <property name="can_focus">False</property>
+             <child>
diff -Nru pavucontrol-2.0/debian/patches/0005-pavucontrol-Handle-IO-errors-in-icon-setting-code.patch pavucontrol-2.0/debian/patches/0005-pavucontrol-Handle-IO-errors-in-icon-setting-code.patch
--- pavucontrol-2.0/debian/patches/0005-pavucontrol-Handle-IO-errors-in-icon-setting-code.patch	1970-01-01 00:00:00.000000000 +0000
+++ pavucontrol-2.0/debian/patches/0005-pavucontrol-Handle-IO-errors-in-icon-setting-code.patch	2014-10-22 23:44:48.000000000 +0000
@@ -0,0 +1,23 @@
+From: Felipe Sateler <fsateler@debian.org>
+Date: Wed, 22 Oct 2014 19:50:00 -0300
+Subject: pavucontrol: Handle IO errors in icon setting code
+
+If gtk cannot load the file, it will throw a Gio::Error. In that case
+fall back to setting the name.
+---
+ src/mainwindow.cc | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/src/mainwindow.cc b/src/mainwindow.cc
+index a67b15c..fbd72e8 100644
+--- a/src/mainwindow.cc
++++ b/src/mainwindow.cc
+@@ -249,6 +249,8 @@ static void set_icon_name_fallback(Gtk::Image *i, const char *name, Gtk::IconSiz
+             i->set(name);
+     } catch (Gtk::IconThemeError &e) {
+         i->set(name);
++    } catch (Gio::Error &e) {
++        i->set(name);
+     }
+ }
+ 
diff -Nru pavucontrol-2.0/debian/patches/series pavucontrol-2.0/debian/patches/series
--- pavucontrol-2.0/debian/patches/series	2014-04-07 19:11:25.000000000 +0000
+++ pavucontrol-2.0/debian/patches/series	2014-10-22 23:44:48.000000000 +0000
@@ -1,2 +1,4 @@
 0001-Don-t-crash-if-pa_stream_peek-returns-NULL.patch
-0002-README-updating.patch
+0003-Reference-the-widget-before-returning-it-from-create.patch
+0004-Do-not-instantiate-cardwidget-devicewidget-and-rolew.patch
+0005-pavucontrol-Handle-IO-errors-in-icon-setting-code.patch
diff -Nru pavucontrol-2.0/debian/rules pavucontrol-2.0/debian/rules
--- pavucontrol-2.0/debian/rules	2014-04-07 19:11:25.000000000 +0000
+++ pavucontrol-2.0/debian/rules	2014-10-22 23:44:48.000000000 +0000
@@ -2,7 +2,6 @@
 
 include /usr/share/cdbs/1/rules/debhelper.mk
 include /usr/share/cdbs/1/class/autotools.mk
-include /usr/share/cdbs/1/rules/patchsys-quilt.mk
 
 DEB_DESTDIR = $(CURDIR)/debian/pavucontrol
 
@@ -12,6 +11,7 @@
 clean::
 	rm -f $(CURDIR)/debian/pavucontrol.1.xml
 	rm -f $(CURDIR)/debian/pavucontrol.1
+	rm -f README
 
 update-patch-series:
 	mkdir -p $(CURDIR)/debian/patches