Commit Graph

27 Commits

Author SHA1 Message Date
a28e23d900 gvc-mixer-control: Fix double-free when setting headset
The callbacks will be called repeatedly, once with data, and later
on with eol == 0. Make sure to only free it when we get the eol call
instead of once we've applied the settings.

Example valgrind output:
==31715== Invalid read of size 8
==31715==    at 0x24529E09: port_status_data_free (gvc-mixer-control.c:2079)
==31715==    by 0x1DB81344: ??? (in /usr/lib64/libpulse.so.0.18.2)
==31715==    by 0x1DDF3FE0: ??? (in /usr/lib64/pulseaudio/libpulsecommon-7.1.so)
==31715==    by 0x1DDF436A: pa_pdispatch_run (in /usr/lib64/pulseaudio/libpulsecommon-7.1.so)
==31715==    by 0x1DB7507D: ??? (in /usr/lib64/libpulse.so.0.18.2)
==31715==    by 0x1DDF6B5E: ??? (in /usr/lib64/pulseaudio/libpulsecommon-7.1.so)
==31715==    by 0x1DDF91BA: ??? (in /usr/lib64/pulseaudio/libpulsecommon-7.1.so)
==31715==    by 0x1DDF9568: ??? (in /usr/lib64/pulseaudio/libpulsecommon-7.1.so)
==31715==    by 0x1DDF9DF9: ??? (in /usr/lib64/pulseaudio/libpulsecommon-7.1.so)
==31715==    by 0x1D96202A: ??? (in /usr/lib64/libpulse-mainloop-glib.so.0.0.5)
==31715==    by 0x7AA7CF9: g_main_dispatch (gmain.c:3154)
==31715==    by 0x7AA7CF9: g_main_context_dispatch (gmain.c:3769)
==31715==    by 0x7AA8057: g_main_context_iterate.isra.29 (gmain.c:3840)
==31715==  Address 0x2bd83480 is 0 bytes inside a block of size 16 free'd
==31715==    at 0x4C2ED6A: free (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==31715==    by 0x7AAD2AD: g_free (gmem.c:189)
==31715==    by 0x1DB81562: ??? (in /usr/lib64/libpulse.so.0.18.2)
==31715==    by 0x1DDF3FE0: ??? (in /usr/lib64/pulseaudio/libpulsecommon-7.1.so)
==31715==    by 0x1DDF436A: pa_pdispatch_run (in /usr/lib64/pulseaudio/libpulsecommon-7.1.so)
==31715==    by 0x1DB7507D: ??? (in /usr/lib64/libpulse.so.0.18.2)
==31715==    by 0x1DDF6B5E: ??? (in /usr/lib64/pulseaudio/libpulsecommon-7.1.so)
==31715==    by 0x1DDF91BA: ??? (in /usr/lib64/pulseaudio/libpulsecommon-7.1.so)
==31715==    by 0x1DDF9568: ??? (in /usr/lib64/pulseaudio/libpulsecommon-7.1.so)
==31715==    by 0x1DDF9DF9: ??? (in /usr/lib64/pulseaudio/libpulsecommon-7.1.so)
==31715==    by 0x1D96202A: ??? (in /usr/lib64/libpulse-mainloop-glib.so.0.0.5)
==31715==    by 0x7AA7CF9: g_main_dispatch (gmain.c:3154)
==31715==    by 0x7AA7CF9: g_main_context_dispatch (gmain.c:3769)
==31715==  Block was alloc'd at
==31715==    at 0x4C2F9C7: calloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==31715==    by 0x7AAD1F0: g_malloc0 (gmem.c:124)
==31715==    by 0x2452A39D: gvc_mixer_control_set_port_status_for_headset (gvc-mixer-control.c:2173)
==31715==    by 0x2451BE81: audio_selection_done (gsd-media-keys-manager.c:2489)
==31715==    by 0x7550ED3: emit_signal_instance_in_idle_cb (gdbusconnection.c:3701)
==31715==    by 0x7AA7CF9: g_main_dispatch (gmain.c:3154)
==31715==    by 0x7AA7CF9: g_main_context_dispatch (gmain.c:3769)
==31715==    by 0x7AA8057: g_main_context_iterate.isra.29 (gmain.c:3840)
==31715==    by 0x7AA8371: g_main_loop_run (gmain.c:4034)
==31715==    by 0x5CEA204: gtk_main (gtkmain.c:1246)
==31715==    by 0x403804: main (main.c:434)
2016-02-22 14:06:03 +01:00
3af25601db gvc-mixer-control: Fix uninitialized variable usage 2016-02-11 18:41:05 +01:00
f3f6812eb9 gvc: Add "what did you plug in" support API
Add "audio-device-selection-needed" which will be emitted when a
headphones, headset or microphone is plugged into a jack socket that
cannot detect which type it was.

Once the user of libgnome-volume-control has asked the user which type
of device this was, they can call gvc_mixer_control_set_headset_port()
to switch the ports for that configuration.

Note that gvc_mixer_control_set_headset_port() supports passing the
card ID, but the detection code only supports a single such device. When
we find hardware that can support > 1 such device, we can test and
implement support without breaking the API.

Based on the original code by David Henningsson <david.henningsson@canonical.com>
for the unity-settings-daemon

https://bugzilla.gnome.org/show_bug.cgi?id=755062
2016-01-17 18:34:07 -02:00
d4eda71c49 gvc-mixer-source-output: Update volume and mute status
This commit implements notifying about volume and mute status changes
for source outputs (applications that monitor the microphone, in short).

https://bugzilla.gnome.org/show_bug.cgi?id=760387
2016-01-12 01:31:56 +01:00
7e5504db3d Emit a signal for stream-changed
https://bugzilla.gnome.org/show_bug.cgi?id=744140
2015-10-05 15:36:43 +02:00
0a79019088 gvc-mixer-control: fix build warnings
- Fix warning about comparison between signed and unsigned integer
  expressions
- Change variable name 'output' to 'device' to fix warning:
  declaration of 'output' shadows a parameter
- Fix warning about missing default case in switch
2015-09-15 15:45:53 +03:00
84819a350d gvc-mixer-stream: make card-index unsigned int
Card in pa_source_info that is used as card-index is uint32_t so it
is never less then 0. Also index in GvcMixerCard is already unsigned
int that is used to compare with card-index. This fixes build
warning - comparison between signed and unsigned integer expressions.

https://bugzilla.gnome.org/show_bug.cgi?id=752244
2015-09-15 15:35:26 +03:00
b7bce32944 gvc-mixer-ui-device: make stream-id unsigned int
GvcMixerStream id is unsigned int and starts with 1, so we can use
0 as invalid id. This fixes build error/warning - comparison
between signed and unsigned integer expressions.
2015-09-09 14:14:15 +03:00
26ea473077 gvc-mixer-ui-device: fix build warnings 2015-09-09 14:13:03 +03:00
7e2d239a91 remove unneeded *_class_init and *_init declarations 2015-09-09 14:13:00 +03:00
fac3a900e5 gvc-mixer-control: Fix bluetooth duplicates
Entries are only hidden when available == PA_PORT_AVAILABLE_NO, so if an
entry toggles between PA_PORT_AVAILABLE_YES and
PA_PORT_AVAILABLE_UNKNOWN (Bluetooth headset switching between HSP/HFP
and A2DP for example), this should not result in new entries being created.

https://bugzilla.gnome.org/show_bug.cgi?id=697545
2015-04-01 14:10:14 +02:00
e14dbe8aa6 gvc-mixer-ui-device: Fix memory leak 2013-09-04 12:58:28 -04:00
11e46cd40d <name> should match repository's name. 2013-08-21 00:40:05 +02:00
6826d0a5fe build: fix building with -std=c99
The "uint" type is not defined for standard C, and building with
-std=c99 enable stricter conformance and results in compilation failing.
Use "guint" instead.
2013-07-09 14:09:05 -07:00
ed0ec42401 ui-device: Don't add off profiles
Right now, makes sure "Off" profiles are not added, because when selected,
the item will disappear and there's no way to get it back (because it
disappeared). In the long term, handling the "off" profile correctly
would be better.

https://bugzilla.gnome.org/show_bug.cgi?id=693654
2013-03-26 18:13:10 +01:00
3d6aac673b build: Ignore object files (*.o) 2013-03-11 13:46:27 +01:00
74c08620b4 Add a GIcon accessor for GvcMixerUIDevices
This will allow to have different icons for internal audio cards
(which are flagged generically as "audio-card"), depending on which
port is in use (ie. headphones or speakers).
This requires the new icon information, which is only exported by
PulseAudio 3.0. If it's not available, we fallback to card icons
like before.

https://bugzilla.gnome.org/show_bug.cgi?id=689931
2013-02-18 14:39:54 +01:00
03894efbcd build: Include .typelib in CLEANFILES 2012-12-18 16:26:28 +01:00
40cdff2479 build: use correct -I$(srcdir)
This Makefile.am is designed for recursive Automake, so we should use
-I$(srcdir), not -I$(srcdir)/gvc.
2012-12-08 13:35:36 -05:00
c1f42d50e3 GvcMixerStream: expose form factor from PulseAudio
https://bugzilla.gnome.org/show_bug.cgi?id=675902
2012-12-08 15:45:28 +01:00
740bab1714 Gvc: make GvcMixerStreamPort a boxed type
It's a prerequisite for accessing it from JS

https://bugzilla.gnome.org/show_bug.cgi?id=675902
2012-12-08 15:45:28 +01:00
eab2bf3eea Fix warnings during build
No need to include the $(srcdir)/gvc directory, it's us.
2012-11-27 12:42:03 +01:00
f3df56c399 Remove Gtk dependency
It is undesirable in gnome-settings-daemon
2012-10-22 22:03:35 +02:00
96e9f84a2b Add DOAP file
Otherwise GNOME git rejects pushes.
Added myself as maintainer because I created the repository.
2012-10-22 22:03:35 +02:00
a1448acc5b Fix introspection support
Fix includes, comments and parameter names so that introspection builds
without warnings.
2012-10-19 20:00:47 +02:00
698b3a5f60 Add .gitignore
Hand-edited because gnome-shell does not use git.mk
2012-10-19 20:00:31 +02:00
9b6e6719d4 Initial import
Code from gnome-control-center, build system integration from gnome-shell
2012-10-19 20:00:25 +02:00