diff options
author | Johan Hedberg <johan.hedberg@nokia.com> | 2007-08-30 08:12:20 +0000 |
---|---|---|
committer | Johan Hedberg <johan.hedberg@nokia.com> | 2007-08-30 08:12:20 +0000 |
commit | 921c1a63009394047b963930cfd49fea60017599 (patch) | |
tree | 5fee4f4538985a1ce2043268ab10c2a76596d2ee /audio | |
parent | 734b3f84c1e48f241bf1004e57a86fa898d083a5 (diff) |
Fix behaviour when no adapter is connected
Diffstat (limited to 'audio')
-rw-r--r-- | audio/manager.c | 9 | ||||
-rw-r--r-- | audio/manager.h | 2 | ||||
-rw-r--r-- | audio/unix.c | 3 |
3 files changed, 11 insertions, 3 deletions
diff --git a/audio/manager.c b/audio/manager.c index 9c57d17d..30b78632 100644 --- a/audio/manager.c +++ b/audio/manager.c @@ -608,6 +608,8 @@ struct device *manager_device_connected(bdaddr_t *bda, const char *uuid) device = manager_find_device(bda, NULL, FALSE); if (!device) { device = create_device(bda); + if (!device) + return NULL; if (!add_device(device, TRUE)) { remove_device(device); return NULL; @@ -676,13 +678,18 @@ struct device *manager_device_connected(bdaddr_t *bda, const char *uuid) return device; } -void manager_create_device(bdaddr_t *bda, create_dev_cb_t cb, +gboolean manager_create_device(bdaddr_t *bda, create_dev_cb_t cb, void *user_data) { struct device *dev; dev = create_device(bda); + if (!dev) + return FALSE; + resolve_services(NULL, dev, cb, user_data); + + return TRUE; } static DBusHandlerResult am_create_device(DBusConnection *conn, diff --git a/audio/manager.h b/audio/manager.h index ceabe680..e71e5d62 100644 --- a/audio/manager.h +++ b/audio/manager.h @@ -49,7 +49,7 @@ struct device *manager_find_device(bdaddr_t *bda, const char *interface, struct device *manager_device_connected(bdaddr_t *bda, const char *uuid); -void manager_create_device(bdaddr_t *bda, create_dev_cb_t cb, +gboolean manager_create_device(bdaddr_t *bda, create_dev_cb_t cb, void *user_data); gboolean manager_authorize(bdaddr_t *dba, const char *uuid, diff --git a/audio/unix.c b/audio/unix.c index d980861f..cee56f8a 100644 --- a/audio/unix.c +++ b/audio/unix.c @@ -574,7 +574,8 @@ static void cfg_event(struct unix_client *client, struct ipc_packet *pkt, int le if (!manager_find_device(&bdaddr, NULL, FALSE)) { if (!bacmp(&bdaddr, BDADDR_ANY)) goto failed; - manager_create_device(&bdaddr, create_cb, client); + if (!manager_create_device(&bdaddr, create_cb, client)) + goto failed; return; } |