* [PATCH] Fix not calling SetConfiguration on hfp/hsp endpoints before connected
@ 2010-12-16 14:13 Luiz Augusto von Dentz
2010-12-16 14:13 ` [PATCH] Fix sending duplicate speaker/microphone gains to the headset Luiz Augusto von Dentz
2010-12-16 14:32 ` [PATCH] Fix not calling SetConfiguration on hfp/hsp endpoints before connected Johan Hedberg
0 siblings, 2 replies; 4+ messages in thread
From: Luiz Augusto von Dentz @ 2010-12-16 14:13 UTC (permalink / raw)
To: linux-bluetooth
From: Luiz Augusto von Dentz <luiz.dentz-von@nokia.com>
This cause some clients like PulseAudio to fail to find a proper
transport since connected state is send before transport configuration
is set.
To fix this now SetConfiguration is called early on when headset is still
in connecting phase, this matches sink/source where SetConfiguration is
also called before connected.
---
audio/media.c | 11 ++++-------
1 files changed, 4 insertions(+), 7 deletions(-)
diff --git a/audio/media.c b/audio/media.c
index 0e6ccc9..b28bb33 100644
--- a/audio/media.c
+++ b/audio/media.c
@@ -151,16 +151,13 @@ static void headset_state_changed(struct audio_device *dev,
switch (new_state) {
case HEADSET_STATE_DISCONNECTED:
- if (old_state != HEADSET_STATE_CONNECTING)
- media_endpoint_clear_configuration(endpoint);
+ media_endpoint_clear_configuration(endpoint);
+ break;
case HEADSET_STATE_CONNECTING:
+ media_endpoint_set_configuration(endpoint, dev, NULL, 0,
+ headset_setconf_cb, dev);
break;
case HEADSET_STATE_CONNECTED:
- if (old_state != HEADSET_STATE_PLAY_IN_PROGRESS &&
- old_state != HEADSET_STATE_PLAYING)
- media_endpoint_set_configuration(endpoint, dev, NULL,
- 0, headset_setconf_cb,
- dev);
break;
case HEADSET_STATE_PLAY_IN_PROGRESS:
break;
--
1.7.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH] Fix sending duplicate speaker/microphone gains to the headset
2010-12-16 14:13 [PATCH] Fix not calling SetConfiguration on hfp/hsp endpoints before connected Luiz Augusto von Dentz
@ 2010-12-16 14:13 ` Luiz Augusto von Dentz
2010-12-16 14:33 ` Johan Hedberg
2010-12-16 14:32 ` [PATCH] Fix not calling SetConfiguration on hfp/hsp endpoints before connected Johan Hedberg
1 sibling, 1 reply; 4+ messages in thread
From: Luiz Augusto von Dentz @ 2010-12-16 14:13 UTC (permalink / raw)
To: linux-bluetooth
From: Luiz Augusto von Dentz <luiz.dentz-von@nokia.com>
Current code only prevent duplicate D-Bus signals, so in case headset
changes the volume a client may set the same volume level again which
would be send as new volume level.
To fix this headset_set_gain now return -EALREADY if nothing has changed
so code using it can just ignore the change instead of sending to remote
device.
---
audio/headset.c | 12 ++++++++----
1 files changed, 8 insertions(+), 4 deletions(-)
diff --git a/audio/headset.c b/audio/headset.c
index 97ae4fd..52d0ce8 100644
--- a/audio/headset.c
+++ b/audio/headset.c
@@ -958,7 +958,7 @@ static int headset_set_gain(struct audio_device *device, uint16_t gain, char typ
case HEADSET_GAIN_SPEAKER:
if (slc->sp_gain == gain) {
DBG("Ignoring no-change in speaker gain");
- return 0;
+ return -EALREADY;
}
name = "SpeakerGainChanged";
property = "SpeakerGain";
@@ -967,7 +967,7 @@ static int headset_set_gain(struct audio_device *device, uint16_t gain, char typ
case HEADSET_GAIN_MICROPHONE:
if (slc->mic_gain == gain) {
DBG("Ignoring no-change in microphone gain");
- return 0;
+ return -EALREADY;
}
name = "MicrophoneGainChanged";
property = "MicrophoneGain";
@@ -1004,7 +1004,7 @@ static int signal_gain_setting(struct audio_device *device, const char *buf)
gain = (dbus_uint16_t) strtol(&buf[7], NULL, 10);
err = headset_set_gain(device, gain, buf[5]);
- if (err < 0)
+ if (err < 0 && err != -EALREADY)
return err;
return headset_send(hs, "\r\nOK\r\n");
@@ -1887,10 +1887,14 @@ static DBusMessage *hs_set_gain(DBusConnection *conn,
return btd_error_not_connected(msg);
err = headset_set_gain(device, gain, type);
- if (err < 0)
+ if (err < 0) {
+ /* Ignore if nothing has changed */
+ if (err == -EALREADY)
+ return dbus_message_new_method_return(msg);
return g_dbus_create_error(msg, ERROR_INTERFACE
".InvalidArgument",
"Must be less than or equal to 15");
+ }
reply = dbus_message_new_method_return(msg);
if (!reply)
--
1.7.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH] Fix not calling SetConfiguration on hfp/hsp endpoints before connected
2010-12-16 14:13 [PATCH] Fix not calling SetConfiguration on hfp/hsp endpoints before connected Luiz Augusto von Dentz
2010-12-16 14:13 ` [PATCH] Fix sending duplicate speaker/microphone gains to the headset Luiz Augusto von Dentz
@ 2010-12-16 14:32 ` Johan Hedberg
1 sibling, 0 replies; 4+ messages in thread
From: Johan Hedberg @ 2010-12-16 14:32 UTC (permalink / raw)
To: Luiz Augusto von Dentz; +Cc: linux-bluetooth
Hi Luiz,
On Thu, Dec 16, 2010, Luiz Augusto von Dentz wrote:
> From: Luiz Augusto von Dentz <luiz.dentz-von@nokia.com>
>
> This cause some clients like PulseAudio to fail to find a proper
> transport since connected state is send before transport configuration
> is set.
>
> To fix this now SetConfiguration is called early on when headset is still
> in connecting phase, this matches sink/source where SetConfiguration is
> also called before connected.
> ---
> audio/media.c | 11 ++++-------
> 1 files changed, 4 insertions(+), 7 deletions(-)
Pushed upstream. Thanks.
Johan
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] Fix sending duplicate speaker/microphone gains to the headset
2010-12-16 14:13 ` [PATCH] Fix sending duplicate speaker/microphone gains to the headset Luiz Augusto von Dentz
@ 2010-12-16 14:33 ` Johan Hedberg
0 siblings, 0 replies; 4+ messages in thread
From: Johan Hedberg @ 2010-12-16 14:33 UTC (permalink / raw)
To: Luiz Augusto von Dentz; +Cc: linux-bluetooth
Hi Luiz,
On Thu, Dec 16, 2010, Luiz Augusto von Dentz wrote:
> From: Luiz Augusto von Dentz <luiz.dentz-von@nokia.com>
>
> Current code only prevent duplicate D-Bus signals, so in case headset
> changes the volume a client may set the same volume level again which
> would be send as new volume level.
>
> To fix this headset_set_gain now return -EALREADY if nothing has changed
> so code using it can just ignore the change instead of sending to remote
> device.
> ---
> audio/headset.c | 12 ++++++++----
> 1 files changed, 8 insertions(+), 4 deletions(-)
This one has also been pushed upstream. Thanks.
Johan
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2010-12-16 14:33 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-12-16 14:13 [PATCH] Fix not calling SetConfiguration on hfp/hsp endpoints before connected Luiz Augusto von Dentz
2010-12-16 14:13 ` [PATCH] Fix sending duplicate speaker/microphone gains to the headset Luiz Augusto von Dentz
2010-12-16 14:33 ` Johan Hedberg
2010-12-16 14:32 ` [PATCH] Fix not calling SetConfiguration on hfp/hsp endpoints before connected Johan Hedberg
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox