advertising: Fix creating another mgmt instance 30/204930/1
authorLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
Wed, 28 Feb 2018 12:09:08 +0000 (14:09 +0200)
committerAmit Purwar <amit.purwar@samsung.com>
Fri, 26 Apr 2019 10:29:34 +0000 (15:59 +0530)
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 <amit.purwar@samsung.com>
src/adapter.c
src/advertising.c
src/advertising.h

index 11f643e..57666b2 100644 (file)
@@ -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,
index 04fb110..b0e66b1 100644 (file)
@@ -17,8 +17,6 @@
  *
  */
 
-#include "advertising.h"
-
 #include <stdint.h>
 #include <stdbool.h>
 #include <errno.h>
@@ -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;
 
index d98c4b8..50d8667 100755 (executable)
@@ -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);