From: Luiz Augusto von Dentz Date: Wed, 28 Feb 2018 12:09:08 +0000 (+0200) Subject: advertising: Fix creating another mgmt instance X-Git-Tag: accepted/tizen/unified/20190522.085452~1^2~152 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c4f41aa69c31ccbaeddc64e11c3e3369ab1cdddd;p=platform%2Fupstream%2Fbluez.git advertising: Fix creating another mgmt instance adapter already instanciate a instance of mgmt so just reuse that instead of creating a new one. Change-Id: I0a1fd65ff2d6f6cbae5783a25f1adbd547992432 Signed-off-by: Amit Purwar --- diff --git a/src/adapter.c b/src/adapter.c index 11f643e..57666b2 100644 --- a/src/adapter.c +++ b/src/adapter.c @@ -13375,7 +13375,7 @@ static int adapter_register(struct btd_adapter *adapter) return -EINVAL; } - adapter->adv_manager = btd_adv_manager_new(adapter); + adapter->adv_manager = btd_adv_manager_new(adapter, adapter->mgmt); db = btd_gatt_database_get_db(adapter->database); adapter->db_id = gatt_db_register(db, services_modified, diff --git a/src/advertising.c b/src/advertising.c index 04fb110..b0e66b1 100644 --- a/src/advertising.c +++ b/src/advertising.c @@ -17,8 +17,6 @@ * */ -#include "advertising.h" - #include #include #include @@ -39,6 +37,7 @@ #include "src/shared/mgmt.h" #include "src/shared/queue.h" #include "src/shared/util.h" +#include "advertising.h" #define LE_ADVERTISING_MGR_IFACE "org.bluez.LEAdvertisingManager1" #define LE_ADVERTISEMENT_IFACE "org.bluez.LEAdvertisement1" @@ -1047,14 +1046,15 @@ static void read_adv_features_callback(uint8_t status, uint16_t length, remove_advertising(manager, 0); } -static struct btd_adv_manager *manager_create(struct btd_adapter *adapter) +static struct btd_adv_manager *manager_create(struct btd_adapter *adapter, + struct mgmt *mgmt) { struct btd_adv_manager *manager; manager = new0(struct btd_adv_manager, 1); manager->adapter = adapter; - manager->mgmt = mgmt_new_default(); + manager->mgmt = mgmt_ref(mgmt); if (!manager->mgmt) { error("Failed to access management interface"); @@ -1088,14 +1088,15 @@ fail: return NULL; } -struct btd_adv_manager *btd_adv_manager_new(struct btd_adapter *adapter) +struct btd_adv_manager *btd_adv_manager_new(struct btd_adapter *adapter, + struct mgmt *mgmt) { struct btd_adv_manager *manager; - if (!adapter) + if (!adapter || !mgmt) return NULL; - manager = manager_create(adapter); + manager = manager_create(adapter, mgmt); if (!manager) return NULL; diff --git a/src/advertising.h b/src/advertising.h index d98c4b8..50d8667 100755 --- a/src/advertising.h +++ b/src/advertising.h @@ -20,6 +20,7 @@ struct btd_adapter; struct btd_adv_manager; -struct btd_adv_manager *btd_adv_manager_new(struct btd_adapter *adapter); +struct btd_adv_manager *btd_adv_manager_new(struct btd_adapter *adapter, + struct mgmt *mgmt); void btd_adv_manager_destroy(struct btd_adv_manager *manager); void btd_adv_manager_refresh(struct btd_adv_manager *manager);