diff options
Diffstat (limited to 'audio')
-rw-r--r-- | audio/headset.c | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/audio/headset.c b/audio/headset.c index 45f989bc..78579b5e 100644 --- a/audio/headset.c +++ b/audio/headset.c @@ -378,7 +378,7 @@ static gboolean sco_cb(GIOChannel *chan, GIOCondition cond, audio_device_t *devi static gboolean sco_connect_cb(GIOChannel *chan, GIOCondition cond, audio_device_t *device) { - struct headset *hs = device->headset; + struct headset *hs; int ret, sk, err, flags; socklen_t len; DBusMessage *reply; @@ -386,8 +386,12 @@ static gboolean sco_connect_cb(GIOChannel *chan, GIOCondition cond, if (cond & G_IO_NVAL) return FALSE; - assert(hs != NULL && hs->pending_connect != NULL && - hs->sco == NULL && hs->state == HEADSET_STATE_PLAY_IN_PROGRESS); + hs = device->headset; + + assert(hs != NULL); + assert(hs->pending_connect != NULL); + assert(hs->sco == NULL); + assert(hs->state == HEADSET_STATE_PLAY_IN_PROGRESS); sk = g_io_channel_unix_get_fd(chan); @@ -1336,8 +1340,6 @@ static DBusHandlerResult hs_play(DBusConnection *conn, DBusMessage *msg, if (!c) return DBUS_HANDLER_RESULT_NEED_MEMORY; - hs->state = HEADSET_STATE_PLAY_IN_PROGRESS; - c->msg = msg ? dbus_message_ref(msg) : NULL; sk = socket(PF_BLUETOOTH, SOCK_SEQPACKET, BTPROTO_SCO); @@ -1383,12 +1385,15 @@ static DBusHandlerResult hs_play(DBusConnection *conn, DBusMessage *msg, goto failed; } - debug("Connect in progress"); + debug("SCO connect in progress"); + + hs->state = HEADSET_STATE_PLAY_IN_PROGRESS; g_io_add_watch(c->io, G_IO_OUT | G_IO_NVAL, (GIOFunc) sco_connect_cb, device); } else { - debug("Connect succeeded with first try"); + debug("SCO connect succeeded with first try"); + hs->state = HEADSET_STATE_PLAY_IN_PROGRESS; sco_connect_cb(c->io, G_IO_OUT, device); } |