summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSzymon Janc <szymon@janc.net.pl>2013-02-06 22:40:34 +0100
committerJohan Hedberg <johan.hedberg@intel.com>2013-02-15 12:43:11 +0200
commitdf0ad3ecb625b5968522acce8b7d33d68f30b4cb (patch)
tree1cb3d74d2b1a3964948ae05f0b1cdd5e81d90f4e /src
parent1e66934e9d75b41768b158ca6d6e7a4025162d5b (diff)
downloadbluez-df0ad3ecb625b5968522acce8b7d33d68f30b4cb.tar.gz
adapter: Add is_default field to struct btd_adapter
Instead of global default_adapter_id variable use is_default field to indicate if adapter is default one.
Diffstat (limited to 'src')
-rw-r--r--src/adapter.c26
1 files changed, 13 insertions, 13 deletions
diff --git a/src/adapter.c b/src/adapter.c
index 2338e60aa..839b0f5a5 100644
--- a/src/adapter.c
+++ b/src/adapter.c
@@ -96,7 +96,6 @@ static unsigned int adapter_remaining = 0;
static bool powering_down = false;
static GSList *adapters = NULL;
-static int default_adapter_id = -1;
static struct mgmt *mgmt_master = NULL;
@@ -184,6 +183,8 @@ struct btd_adapter {
unsigned int pair_device_id;
guint pair_device_timeout;
+
+ bool is_default; /* true if adapter is default one */
};
static struct btd_adapter *btd_adapter_lookup(uint16_t index)
@@ -205,14 +206,11 @@ struct btd_adapter *btd_adapter_get_default(void)
{
GList *list;
- if (default_adapter_id < 0)
- return NULL;
-
for (list = g_list_first(adapter_list); list;
list = g_list_next(list)) {
struct btd_adapter *adapter = list->data;
- if (adapter->dev_id == default_adapter_id)
+ if (adapter->is_default)
return adapter;
}
@@ -224,10 +222,7 @@ bool btd_adapter_is_default(struct btd_adapter *adapter)
if (!adapter)
return false;
- if (adapter->dev_id == default_adapter_id)
- return true;
-
- return false;
+ return adapter->is_default;
}
uint16_t btd_adapter_get_index(struct btd_adapter *adapter)
@@ -5522,8 +5517,8 @@ static int adapter_register(struct btd_adapter *adapter)
adapter->initialized = TRUE;
- if (default_adapter_id < 0)
- default_adapter_id = adapter->dev_id;
+ if (g_slist_length(adapters) == 1)
+ adapter->is_default = true;
if (main_opts.did_source)
set_did(adapter, main_opts.did_vendor, main_opts.did_product,
@@ -5540,8 +5535,13 @@ static int adapter_unregister(struct btd_adapter *adapter)
adapters = g_slist_remove(adapters, adapter);
- if (default_adapter_id == adapter->dev_id || default_adapter_id < 0)
- default_adapter_id = hci_get_route(NULL);
+ if (adapter->is_default && adapters != NULL) {
+ struct btd_adapter *new_default;
+
+ new_default = adapter_find_by_id(hci_get_route(NULL));
+ if (new_default)
+ new_default->is_default = true;
+ }
adapter_list = g_list_remove(adapter_list, adapter);