Diff between 39ce03ec74ab586975b6aaa2c4b8154e86ca60ad and 07597ac33194760ae4ed178cdf354cafb844a471

Changed Files

File Additions Deletions Status
plugins/hciops.c +1 -1 modified
plugins/mgmtops.c +2 -1 modified
src/adapter.c +2 -4 modified
src/adapter.h +1 -1 modified
src/manager.c +2 -2 modified
src/manager.h +1 -1 modified

Full Patch

diff --git a/plugins/hciops.c b/plugins/hciops.c
index 04802f4..00b9006 100644
--- a/plugins/hciops.c
+++ b/plugins/hciops.c
@@ -656,7 +656,7 @@ static gboolean init_adapter(int index)
 	gboolean pairable, discoverable;
 
 	if (!dev->registered) {
-		adapter = btd_manager_register_adapter(index);
+		adapter = btd_manager_register_adapter(index, TRUE);
 		if (adapter)
 			dev->registered = TRUE;
 	} else {
diff --git a/plugins/mgmtops.c b/plugins/mgmtops.c
index 147cf7c..fd42a64 100644
--- a/plugins/mgmtops.c
+++ b/plugins/mgmtops.c
@@ -959,7 +959,8 @@ static void read_info_complete(int sk, uint16_t index, void *buf, size_t len)
 	DBG("hci%u name %s", index, (char *) rp->name);
 	DBG("hci%u short name %s", index, (char *) rp->short_name);
 
-	adapter = btd_manager_register_adapter(index);
+	adapter = btd_manager_register_adapter(index,
+					mgmt_powered(info->current_settings));
 	if (adapter == NULL) {
 		error("mgmtops: unable to register adapter");
 		return;
diff --git a/src/adapter.c b/src/adapter.c
index 5742fd2..685e1ca 100644
--- a/src/adapter.c
+++ b/src/adapter.c
@@ -2454,11 +2454,9 @@ void btd_adapter_unref(struct btd_adapter *adapter)
 	g_free(path);
 }
 
-gboolean adapter_init(struct btd_adapter *adapter)
+gboolean adapter_init(struct btd_adapter *adapter, gboolean up)
 {
-	/* adapter_ops makes sure that newly registered adapters always
-	 * start off as powered */
-	adapter->up = TRUE;
+	adapter->up = up;
 
 	adapter->allow_name_changes = TRUE;
 
diff --git a/src/adapter.h b/src/adapter.h
index c285172..22bb0bb 100644
--- a/src/adapter.h
+++ b/src/adapter.h
@@ -99,7 +99,7 @@ void adapter_remove_device(DBusConnection *conn, struct btd_adapter *adapter,
 						gboolean remove_storage);
 
 struct btd_adapter *adapter_create(DBusConnection *conn, int id);
-gboolean adapter_init(struct btd_adapter *adapter);
+gboolean adapter_init(struct btd_adapter *adapter, gboolean up);
 void adapter_remove(struct btd_adapter *adapter);
 void adapter_set_allow_name_changes(struct btd_adapter *adapter,
 						gboolean allow_name_changes);
diff --git a/src/manager.c b/src/manager.c
index 1d44c66..8c49457 100644
--- a/src/manager.c
+++ b/src/manager.c
@@ -377,7 +377,7 @@ void manager_add_adapter(const char *path)
 	btd_stop_exit_timer();
 }
 
-struct btd_adapter *btd_manager_register_adapter(int id)
+struct btd_adapter *btd_manager_register_adapter(int id, gboolean up)
 {
 	struct btd_adapter *adapter;
 	const char *path;
@@ -394,7 +394,7 @@ struct btd_adapter *btd_manager_register_adapter(int id)
 
 	adapters = g_slist_append(adapters, adapter);
 
-	if (!adapter_init(adapter)) {
+	if (!adapter_init(adapter, up)) {
 		adapters = g_slist_remove(adapters, adapter);
 		btd_adapter_unref(adapter);
 		return NULL;
diff --git a/src/manager.h b/src/manager.h
index 4f92d2f..0056909 100644
--- a/src/manager.h
+++ b/src/manager.h
@@ -38,7 +38,7 @@ struct btd_adapter *manager_find_adapter_by_id(int id);
 struct btd_adapter *manager_get_default_adapter(void);
 void manager_foreach_adapter(adapter_cb func, gpointer user_data);
 GSList *manager_get_adapters(void);
-struct btd_adapter *btd_manager_register_adapter(int id);
+struct btd_adapter *btd_manager_register_adapter(int id, gboolean up);
 int btd_manager_unregister_adapter(int id);
 void manager_add_adapter(const char *path);
 void btd_manager_set_did(uint16_t vendor, uint16_t product, uint16_t version);