* [Bluez-devel] [patch] alsa plugin disconnection
@ 2008-03-03 18:05 Frédéric Dalleau
2008-03-03 18:09 ` Frédéric Dalleau
0 siblings, 1 reply; 3+ messages in thread
From: Frédéric Dalleau @ 2008-03-03 18:05 UTC (permalink / raw)
To: BlueZ development
Hi,
This patch will allow alsa plugin to detect disconnection of devices and
return error to applications.
Not all applications will handle this error, but at least it is available.
Comments are welcome.
Frederic
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Bluez-devel mailing list
Bluez-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bluez-devel
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [Bluez-devel] [patch] alsa plugin disconnection
2008-03-03 18:05 [Bluez-devel] [patch] alsa plugin disconnection Frédéric Dalleau
@ 2008-03-03 18:09 ` Frédéric Dalleau
2008-03-04 21:59 ` Luiz Augusto von Dentz
0 siblings, 1 reply; 3+ messages in thread
From: Frédéric Dalleau @ 2008-03-03 18:09 UTC (permalink / raw)
To: BlueZ development
[-- Attachment #1: Type: text/plain, Size: 692 bytes --]
updated patch.
Frédéric Dalleau wrote:
> Hi,
>
> This patch will allow alsa plugin to detect disconnection of devices and
> return error to applications.
> Not all applications will handle this error, but at least it is available.
>
> Comments are welcome.
>
> Frederic
>
>
> -------------------------------------------------------------------------
> This SF.net email is sponsored by: Microsoft
> Defy all challenges. Microsoft(R) Visual Studio 2008.
> http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
> _______________________________________________
> Bluez-devel mailing list
> Bluez-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/bluez-devel
>
[-- Attachment #2: alsa_plugin_disconnection.patch --]
[-- Type: text/x-patch, Size: 2334 bytes --]
diff --git a/audio/pcm_bluetooth.c b/audio/pcm_bluetooth.c
index 2282b2e..1355066 100644
--- a/audio/pcm_bluetooth.c
+++ b/audio/pcm_bluetooth.c
@@ -750,6 +750,11 @@ static int bluetooth_poll_revents(snd_pcm_ioplug_t *io ATTRIBUTE_UNUSED,
return 0;
}
+static int bluetooth_playback_poll_descriptors_count(snd_pcm_ioplug_t *io)
+{
+ return 2;
+}
+
static int bluetooth_playback_poll_descriptors(snd_pcm_ioplug_t *io,
struct pollfd *pfd, unsigned int space)
{
@@ -759,14 +764,17 @@ static int bluetooth_playback_poll_descriptors(snd_pcm_ioplug_t *io,
assert(data->pipefd[0] >= 0);
- if (space < 1)
+ if (space < 2)
return 0;
pfd[0].fd = data->pipefd[0];
pfd[0].events = POLLIN;
pfd[0].revents = 0;
+ pfd[1].fd = data->stream.fd;
+ pfd[1].events = POLLERR | POLLHUP | POLLNVAL;
+ pfd[1].revents = 0;
- return 1;
+ return 2;
}
static int bluetooth_playback_poll_revents(snd_pcm_ioplug_t *io,
@@ -779,14 +787,19 @@ static int bluetooth_playback_poll_revents(snd_pcm_ioplug_t *io,
DBG("");
assert(pfds);
- assert(nfds == 1);
+ assert(nfds == 2);
assert(revents);
assert(pfds[0].fd >= 0);
+ assert(pfds[1].fd >= 0);
if (io->state != SND_PCM_STATE_PREPARED)
ret = read(pfds[0].fd, buf, 1);
- *revents = (pfds[0].revents & ~POLLIN) | POLLOUT;
+ if (pfds[1].revents & (POLLERR | POLLHUP | POLLNVAL))
+ io->state = SND_PCM_STATE_DISCONNECTED;
+
+ revents[0] = (pfds[0].revents & ~POLLIN) | POLLOUT;
+ revents[1] = (pfds[1].revents & ~POLLIN);
return 0;
}
@@ -1087,6 +1100,7 @@ static snd_pcm_ioplug_callback_t bluetooth_hsp_playback = {
.hw_params = bluetooth_hsp_hw_params,
.prepare = bluetooth_prepare,
.transfer = bluetooth_hsp_write,
+ .poll_descriptors_count = bluetooth_playback_poll_descriptors_count,
.poll_descriptors = bluetooth_playback_poll_descriptors,
.poll_revents = bluetooth_playback_poll_revents,
.delay = bluetooth_playback_delay,
@@ -1112,6 +1126,7 @@ static snd_pcm_ioplug_callback_t bluetooth_a2dp_playback = {
.hw_params = bluetooth_a2dp_hw_params,
.prepare = bluetooth_prepare,
.transfer = bluetooth_a2dp_write,
+ .poll_descriptors_count = bluetooth_playback_poll_descriptors_count,
.poll_descriptors = bluetooth_playback_poll_descriptors,
.poll_revents = bluetooth_playback_poll_revents,
.delay = bluetooth_playback_delay,
[-- Attachment #3: Type: text/plain, Size: 228 bytes --]
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
[-- Attachment #4: Type: text/plain, Size: 164 bytes --]
_______________________________________________
Bluez-devel mailing list
Bluez-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bluez-devel
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [Bluez-devel] [patch] alsa plugin disconnection
2008-03-03 18:09 ` Frédéric Dalleau
@ 2008-03-04 21:59 ` Luiz Augusto von Dentz
0 siblings, 0 replies; 3+ messages in thread
From: Luiz Augusto von Dentz @ 2008-03-04 21:59 UTC (permalink / raw)
To: BlueZ development
Committed, even though rhythmbox (alsasink) seems to not handle the
disconnect properly.
On Mon, Mar 3, 2008 at 3:09 PM, Fr=E9d=E9ric Dalleau
<frederic.dalleau@access-company.com> wrote:
>
> updated patch.
>
>
>
> Fr=E9d=E9ric Dalleau wrote:
> > Hi,
> >
> > This patch will allow alsa plugin to detect disconnection of devices a=
nd
> > return error to applications.
> > Not all applications will handle this error, but at least it is availa=
ble.
> >
> > Comments are welcome.
> >
> > Frederic
> >
> >
> > ----------------------------------------------------------------------=
---
> > This SF.net email is sponsored by: Microsoft
> > Defy all challenges. Microsoft(R) Visual Studio 2008.
> > http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
> > _______________________________________________
> > Bluez-devel mailing list
> > Bluez-devel@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/bluez-devel
> >
>
>
> -------------------------------------------------------------------------
> This SF.net email is sponsored by: Microsoft
> Defy all challenges. Microsoft(R) Visual Studio 2008.
> http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
> _______________________________________________
> Bluez-devel mailing list
> Bluez-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/bluez-devel
>
>
-- =
Luiz Augusto von Dentz
Engenheiro de Computa=E7=E3o
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Bluez-devel mailing list
Bluez-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bluez-devel
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2008-03-04 21:59 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-03-03 18:05 [Bluez-devel] [patch] alsa plugin disconnection Frédéric Dalleau
2008-03-03 18:09 ` Frédéric Dalleau
2008-03-04 21:59 ` Luiz Augusto von Dentz
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox