2021-03-16 16:21:58

by Frédéric Danis

[permalink] [raw]
Subject: [PATCH Bluez v3 2/4] src: Replace calls to g_timeout_add_seconds by timeout_add_seconds

---
src/adapter.c | 90 ++++++++++++++++++++++++++---------------------
src/adv_monitor.c | 14 ++++----
src/advertising.c | 28 ++++++++-------
src/device.c | 60 ++++++++++++++++---------------
src/main.c | 7 ++--
src/sdp-client.c | 13 +++----
6 files changed, 115 insertions(+), 97 deletions(-)

diff --git a/src/adapter.c b/src/adapter.c
index cc0849f99..2fa06b73c 100644
--- a/src/adapter.c
+++ b/src/adapter.c
@@ -46,6 +46,7 @@
#include "src/shared/queue.h"
#include "src/shared/att.h"
#include "src/shared/gatt-db.h"
+#include "src/shared/timeout.h"

#include "btio/btio.h"
#include "btd.h"
@@ -237,10 +238,12 @@ struct btd_adapter {
struct discovery_client *client; /* active discovery client */

GSList *discovery_found; /* list of found devices */
- guint discovery_idle_timeout; /* timeout between discovery runs */
- guint passive_scan_timeout; /* timeout between passive scans */
+ unsigned int discovery_idle_timeout; /* timeout between discovery
+ * runs
+ */
+ unsigned int passive_scan_timeout; /* timeout between passive scans */

- guint pairable_timeout_id; /* pairable timeout id */
+ unsigned int pairable_timeout_id; /* pairable timeout id */
guint auth_idle_id; /* Pending authorization dequeue */
GQueue *auths; /* Ongoing and pending auths */
bool pincode_requested; /* PIN requested during last bonding */
@@ -268,13 +271,13 @@ struct btd_adapter {
struct oob_handler *oob_handler;

unsigned int load_ltks_id;
- guint load_ltks_timeout;
+ unsigned int load_ltks_timeout;

unsigned int confirm_name_id;
- guint confirm_name_timeout;
+ unsigned int confirm_name_timeout;

unsigned int pair_device_id;
- guint pair_device_timeout;
+ unsigned int pair_device_timeout;

unsigned int db_id; /* Service event handler for GATT db */

@@ -695,7 +698,7 @@ static bool set_discoverable(struct btd_adapter *adapter, uint8_t mode,
return false;
}

-static gboolean pairable_timeout_handler(gpointer user_data)
+static bool pairable_timeout_handler(gpointer user_data)
{
struct btd_adapter *adapter = user_data;

@@ -709,7 +712,7 @@ static gboolean pairable_timeout_handler(gpointer user_data)
static void trigger_pairable_timeout(struct btd_adapter *adapter)
{
if (adapter->pairable_timeout_id > 0) {
- g_source_remove(adapter->pairable_timeout_id);
+ timeout_remove(adapter->pairable_timeout_id);
adapter->pairable_timeout_id = 0;
}

@@ -718,8 +721,9 @@ static void trigger_pairable_timeout(struct btd_adapter *adapter)

if (adapter->pairable_timeout > 0)
adapter->pairable_timeout_id =
- g_timeout_add_seconds(adapter->pairable_timeout,
- pairable_timeout_handler, adapter);
+ timeout_add_seconds(adapter->pairable_timeout,
+ pairable_timeout_handler, adapter,
+ NULL);
}

static void local_name_changed_callback(uint16_t index, uint16_t length,
@@ -1323,7 +1327,7 @@ static void passive_scanning_complete(uint8_t status, uint16_t length,
}
}

-static gboolean passive_scanning_timeout(gpointer user_data)
+static bool passive_scanning_timeout(gpointer user_data)
{
struct btd_adapter *adapter = user_data;
struct mgmt_cp_start_discovery cp;
@@ -1347,7 +1351,7 @@ static void trigger_passive_scanning(struct btd_adapter *adapter)
DBG("");

if (adapter->passive_scan_timeout > 0) {
- g_source_remove(adapter->passive_scan_timeout);
+ timeout_remove(adapter->passive_scan_timeout);
adapter->passive_scan_timeout = 0;
}

@@ -1386,8 +1390,9 @@ static void trigger_passive_scanning(struct btd_adapter *adapter)
if (!adapter->connect_list)
return;

- adapter->passive_scan_timeout = g_timeout_add_seconds(CONN_SCAN_TIMEOUT,
- passive_scanning_timeout, adapter);
+ adapter->passive_scan_timeout = timeout_add_seconds(CONN_SCAN_TIMEOUT,
+ passive_scanning_timeout, adapter,
+ NULL);
}

static void stop_passive_scanning_complete(uint8_t status, uint16_t length,
@@ -1467,7 +1472,7 @@ static void cancel_passive_scanning(struct btd_adapter *adapter)
DBG("");

if (adapter->passive_scan_timeout > 0) {
- g_source_remove(adapter->passive_scan_timeout);
+ timeout_remove(adapter->passive_scan_timeout);
adapter->passive_scan_timeout = 0;
}
}
@@ -1512,7 +1517,7 @@ static void discovery_cleanup(struct btd_adapter *adapter, int timeout)
adapter->discovery_type = 0x00;

if (adapter->discovery_idle_timeout > 0) {
- g_source_remove(adapter->discovery_idle_timeout);
+ timeout_remove(adapter->discovery_idle_timeout);
adapter->discovery_idle_timeout = 0;
}

@@ -1688,7 +1693,7 @@ static void start_discovery_complete(uint8_t status, uint16_t length,
trigger_start_discovery(adapter, IDLE_DISCOV_TIMEOUT * 2);
}

-static gboolean start_discovery_timeout(gpointer user_data)
+static bool start_discovery_timeout(gpointer user_data)
{
struct btd_adapter *adapter = user_data;
struct mgmt_cp_start_service_discovery *sd_cp;
@@ -1784,7 +1789,7 @@ static void trigger_start_discovery(struct btd_adapter *adapter, guint delay)
cancel_passive_scanning(adapter);

if (adapter->discovery_idle_timeout > 0) {
- g_source_remove(adapter->discovery_idle_timeout);
+ timeout_remove(adapter->discovery_idle_timeout);
adapter->discovery_idle_timeout = 0;
}

@@ -1797,8 +1802,8 @@ static void trigger_start_discovery(struct btd_adapter *adapter, guint delay)
if (!btd_adapter_get_powered(adapter))
return;

- adapter->discovery_idle_timeout = g_timeout_add_seconds(delay,
- start_discovery_timeout, adapter);
+ adapter->discovery_idle_timeout = timeout_add_seconds(delay,
+ start_discovery_timeout, adapter, NULL);
}

static void suspend_discovery_complete(uint8_t status, uint16_t length,
@@ -1837,7 +1842,7 @@ static void suspend_discovery(struct btd_adapter *adapter)
* The restart will be triggered when the discovery is resumed.
*/
if (adapter->discovery_idle_timeout > 0) {
- g_source_remove(adapter->discovery_idle_timeout);
+ timeout_remove(adapter->discovery_idle_timeout);
adapter->discovery_idle_timeout = 0;
}

@@ -1918,7 +1923,7 @@ static void discovering_callback(uint16_t index, uint16_t length,

case 0x01:
if (adapter->discovery_idle_timeout > 0) {
- g_source_remove(adapter->discovery_idle_timeout);
+ timeout_remove(adapter->discovery_idle_timeout);
adapter->discovery_idle_timeout = 0;
}

@@ -2404,7 +2409,7 @@ static bool parse_pathloss(DBusMessageIter *value,
return true;
}

-static bool parse_transport(DBusMessageIter *value,
+static bool parse_transport(DBusMessageIter *value,
struct discovery_filter *filter)
{
char *transport_str;
@@ -3931,7 +3936,7 @@ static void load_link_keys(struct btd_adapter *adapter, GSList *keys,
adapter->dev_id);
}

-static gboolean load_ltks_timeout(gpointer user_data)
+static bool load_ltks_timeout(gpointer user_data)
{
struct btd_adapter *adapter = user_data;

@@ -3959,7 +3964,7 @@ static void load_ltks_complete(uint8_t status, uint16_t length,

adapter->load_ltks_id = 0;

- g_source_remove(adapter->load_ltks_timeout);
+ timeout_remove(adapter->load_ltks_timeout);
adapter->load_ltks_timeout = 0;

DBG("LTKs loaded for hci%u", adapter->dev_id);
@@ -4036,8 +4041,9 @@ static void load_ltks(struct btd_adapter *adapter, GSList *keys)
* and forgets to send a command complete response. However in
* case of failures it does send a command status.
*/
- adapter->load_ltks_timeout = g_timeout_add_seconds(2,
- load_ltks_timeout, adapter);
+ adapter->load_ltks_timeout = timeout_add_seconds(2,
+ load_ltks_timeout, adapter,
+ NULL);
}

static void load_irks_complete(uint8_t status, uint16_t length,
@@ -5337,23 +5343,23 @@ static void adapter_free(gpointer user_data)
remove_discovery_list(adapter);

if (adapter->pairable_timeout_id > 0) {
- g_source_remove(adapter->pairable_timeout_id);
+ timeout_remove(adapter->pairable_timeout_id);
adapter->pairable_timeout_id = 0;
}

if (adapter->passive_scan_timeout > 0) {
- g_source_remove(adapter->passive_scan_timeout);
+ timeout_remove(adapter->passive_scan_timeout);
adapter->passive_scan_timeout = 0;
}

if (adapter->load_ltks_timeout > 0)
- g_source_remove(adapter->load_ltks_timeout);
+ timeout_remove(adapter->load_ltks_timeout);

if (adapter->confirm_name_timeout > 0)
- g_source_remove(adapter->confirm_name_timeout);
+ timeout_remove(adapter->confirm_name_timeout);

if (adapter->pair_device_timeout > 0)
- g_source_remove(adapter->pair_device_timeout);
+ timeout_remove(adapter->pair_device_timeout);

if (adapter->auth_idle_id)
g_source_remove(adapter->auth_idle_id);
@@ -6386,7 +6392,7 @@ const bdaddr_t *btd_adapter_get_address(struct btd_adapter *adapter)
return &adapter->bdaddr;
}

-static gboolean confirm_name_timeout(gpointer user_data)
+static bool confirm_name_timeout(gpointer user_data)
{
struct btd_adapter *adapter = user_data;

@@ -6414,7 +6420,7 @@ static void confirm_name_complete(uint8_t status, uint16_t length,

adapter->confirm_name_id = 0;

- g_source_remove(adapter->confirm_name_timeout);
+ timeout_remove(adapter->confirm_name_timeout);
adapter->confirm_name_timeout = 0;

DBG("Confirm name complete for hci%u", adapter->dev_id);
@@ -6445,7 +6451,7 @@ static void confirm_name(struct btd_adapter *adapter, const bdaddr_t *bdaddr,
}

if (adapter->confirm_name_timeout > 0) {
- g_source_remove(adapter->confirm_name_timeout);
+ timeout_remove(adapter->confirm_name_timeout);
adapter->confirm_name_timeout = 0;
}

@@ -6470,8 +6476,9 @@ static void confirm_name(struct btd_adapter *adapter, const bdaddr_t *bdaddr,
* and forgets to send a command complete response. However in
* case of failures it does send a command status.
*/
- adapter->confirm_name_timeout = g_timeout_add_seconds(2,
- confirm_name_timeout, adapter);
+ adapter->confirm_name_timeout = timeout_add_seconds(2,
+ confirm_name_timeout, adapter,
+ NULL);
}

static void adapter_msd_notify(struct btd_adapter *adapter,
@@ -7722,7 +7729,7 @@ static void free_pair_device_data(void *user_data)
g_free(data);
}

-static gboolean pair_device_timeout(gpointer user_data)
+static bool pair_device_timeout(gpointer user_data)
{
struct pair_device_data *data = user_data;
struct btd_adapter *adapter = data->adapter;
@@ -7749,7 +7756,7 @@ static void pair_device_complete(uint8_t status, uint16_t length,
adapter->pair_device_id = 0;

if (adapter->pair_device_timeout > 0) {
- g_source_remove(adapter->pair_device_timeout);
+ timeout_remove(adapter->pair_device_timeout);
adapter->pair_device_timeout = 0;
}

@@ -7835,8 +7842,9 @@ int adapter_bonding_attempt(struct btd_adapter *adapter, const bdaddr_t *bdaddr,
* request never times out. Therefore, add a timer to clean up
* if no response arrives
*/
- adapter->pair_device_timeout = g_timeout_add_seconds(BONDING_TIMEOUT,
- pair_device_timeout, data);
+ adapter->pair_device_timeout = timeout_add_seconds(BONDING_TIMEOUT,
+ pair_device_timeout, data,
+ NULL);

return 0;
}
diff --git a/src/adv_monitor.c b/src/adv_monitor.c
index 54751db0b..33e7c8454 100644
--- a/src/adv_monitor.c
+++ b/src/adv_monitor.c
@@ -31,6 +31,7 @@
#include "src/error.h"
#include "src/shared/mgmt.h"
#include "src/shared/queue.h"
+#include "src/shared/timeout.h"
#include "src/shared/util.h"

#include "adv_monitor.h"
@@ -125,7 +126,7 @@ struct adv_monitor_device {
*/
time_t last_seen; /* Time when last Adv was received */
bool found; /* State of the device - lost/found */
- guint lost_timer; /* Timer to track if the device goes
+ unsigned int lost_timer; /* Timer to track if the device goes
* offline/out-of-range
*/
};
@@ -1385,7 +1386,7 @@ static void monitor_device_free(void *data)
}

if (dev->lost_timer) {
- g_source_remove(dev->lost_timer);
+ timeout_remove(dev->lost_timer);
dev->lost_timer = 0;
}

@@ -1468,7 +1469,7 @@ static void report_device_state_setup(DBusMessageIter *iter, void *user_data)
}

/* Handles a situation where the device goes offline/out-of-range */
-static gboolean handle_device_lost_timeout(gpointer user_data)
+static bool handle_device_lost_timeout(gpointer user_data)
{
struct adv_monitor_device *dev = user_data;
struct adv_monitor *monitor = dev->monitor;
@@ -1534,7 +1535,7 @@ static void adv_monitor_filter_rssi(struct adv_monitor *monitor,
}

if (dev->lost_timer) {
- g_source_remove(dev->lost_timer);
+ timeout_remove(dev->lost_timer);
dev->lost_timer = 0;
}

@@ -1609,7 +1610,8 @@ static void adv_monitor_filter_rssi(struct adv_monitor *monitor,
*/
if (dev->found) {
dev->lost_timer =
- g_timeout_add_seconds(monitor->low_rssi_timeout,
- handle_device_lost_timeout, dev);
+ timeout_add_seconds(monitor->low_rssi_timeout,
+ handle_device_lost_timeout, dev,
+ NULL);
}
}
diff --git a/src/advertising.c b/src/advertising.c
index 15a343e52..d76e97a74 100644
--- a/src/advertising.c
+++ b/src/advertising.c
@@ -32,6 +32,7 @@
#include "src/shared/ad.h"
#include "src/shared/mgmt.h"
#include "src/shared/queue.h"
+#include "src/shared/timeout.h"
#include "src/shared/util.h"
#include "advertising.h"

@@ -111,10 +112,10 @@ static void client_free(void *data)
struct btd_adv_client *client = data;

if (client->to_id > 0)
- g_source_remove(client->to_id);
+ timeout_remove(client->to_id);

if (client->disc_to_id > 0)
- g_source_remove(client->disc_to_id);
+ timeout_remove(client->disc_to_id);

if (client->client) {
g_dbus_client_set_disconnect_watch(client->client, NULL, NULL);
@@ -574,7 +575,7 @@ static bool parse_duration(DBusMessageIter *iter,
return true;
}

-static gboolean client_timeout(void *user_data)
+static bool client_timeout(void *user_data)
{
struct btd_adv_client *client = user_data;

@@ -593,7 +594,7 @@ static bool parse_timeout(DBusMessageIter *iter,
{
if (!iter) {
client->timeout = 0;
- g_source_remove(client->to_id);
+ timeout_remove(client->to_id);
client->to_id = 0;
return true;
}
@@ -604,11 +605,12 @@ static bool parse_timeout(DBusMessageIter *iter,
dbus_message_iter_get_basic(iter, &client->timeout);

if (client->to_id)
- g_source_remove(client->to_id);
+ timeout_remove(client->to_id);

if (client->timeout > 0)
- client->to_id = g_timeout_add_seconds(client->timeout,
- client_timeout, client);
+ client->to_id = timeout_add_seconds(client->timeout,
+ client_timeout, client,
+ NULL);

return true;
}
@@ -945,7 +947,7 @@ static int refresh_advertisement(struct btd_adv_client *client,
return refresh_legacy_adv(client, func, mgmt_id);
}

-static gboolean client_discoverable_timeout(void *user_data)
+static bool client_discoverable_timeout(void *user_data)
{
struct btd_adv_client *client = user_data;

@@ -965,7 +967,7 @@ static bool parse_discoverable_timeout(DBusMessageIter *iter,
{
if (!iter) {
client->discoverable_to = 0;
- g_source_remove(client->disc_to_id);
+ timeout_remove(client->disc_to_id);
client->disc_to_id = 0;
return true;
}
@@ -976,11 +978,11 @@ static bool parse_discoverable_timeout(DBusMessageIter *iter,
dbus_message_iter_get_basic(iter, &client->discoverable_to);

if (client->disc_to_id)
- g_source_remove(client->disc_to_id);
+ timeout_remove(client->disc_to_id);

- client->disc_to_id = g_timeout_add_seconds(client->discoverable_to,
+ client->disc_to_id = timeout_add_seconds(client->discoverable_to,
client_discoverable_timeout,
- client);
+ client, NULL);

return true;
}
@@ -1361,7 +1363,7 @@ static DBusMessage *parse_advertisement(struct btd_adv_client *client)
}
} else if (client->disc_to_id) {
/* Ignore DiscoverableTimeout if not discoverable */
- g_source_remove(client->disc_to_id);
+ timeout_remove(client->disc_to_id);
client->disc_to_id = 0;
client->discoverable_to = 0;
}
diff --git a/src/device.c b/src/device.c
index b99f6fbb0..7a6f7643a 100644
--- a/src/device.c
+++ b/src/device.c
@@ -41,6 +41,7 @@
#include "src/shared/gatt-client.h"
#include "src/shared/gatt-server.h"
#include "src/shared/ad.h"
+#include "src/shared/timeout.h"
#include "btio/btio.h"
#include "lib/mgmt.h"
#include "attrib/att.h"
@@ -219,9 +220,9 @@ struct btd_device {
GSList *watches; /* List of disconnect_data */
bool temporary;
bool connectable;
- guint disconn_timer;
- guint discov_timer;
- guint temporary_timer; /* Temporary/disappear timer */
+ unsigned int disconn_timer;
+ unsigned int discov_timer;
+ unsigned int temporary_timer; /* Temporary/disappear timer */
struct browse_req *browse; /* service discover request */
struct bonding_req *bonding;
struct authentication_req *authr; /* authentication request */
@@ -691,13 +692,13 @@ static void device_free(gpointer user_data)
(sdp_free_func_t) sdp_record_free);

if (device->disconn_timer)
- g_source_remove(device->disconn_timer);
+ timeout_remove(device->disconn_timer);

if (device->discov_timer)
- g_source_remove(device->discov_timer);
+ timeout_remove(device->discov_timer);

if (device->temporary_timer)
- g_source_remove(device->temporary_timer);
+ timeout_remove(device->temporary_timer);

if (device->connect)
dbus_message_unref(device->connect);
@@ -1469,7 +1470,7 @@ static gboolean dev_property_wake_allowed_exist(
return device_get_wake_support(device);
}

-static gboolean disconnect_all(gpointer user_data)
+static bool disconnect_all(gpointer user_data)
{
struct btd_device *device = user_data;

@@ -1494,7 +1495,7 @@ int device_block(struct btd_device *device, gboolean update_only)
return 0;

if (device->disconn_timer > 0)
- g_source_remove(device->disconn_timer);
+ timeout_remove(device->disconn_timer);

disconnect_all(device);

@@ -1644,9 +1645,9 @@ void device_request_disconnect(struct btd_device *device, DBusMessage *msg)
return;
}

- device->disconn_timer = g_timeout_add_seconds(DISCONNECT_TIMER,
+ device->disconn_timer = timeout_add_seconds(DISCONNECT_TIMER,
disconnect_all,
- device);
+ device, NULL);
}

bool device_is_disconnecting(struct btd_device *device)
@@ -2991,7 +2992,7 @@ void device_add_connection(struct btd_device *dev, uint8_t bdaddr_type)

/* Remove temporary timer while connected */
if (dev->temporary_timer) {
- g_source_remove(dev->temporary_timer);
+ timeout_remove(dev->temporary_timer);
dev->temporary_timer = 0;
}

@@ -3014,7 +3015,7 @@ void device_remove_connection(struct btd_device *device, uint8_t bdaddr_type)
device_set_svc_refreshed(device, false);

if (device->disconn_timer > 0) {
- g_source_remove(device->disconn_timer);
+ timeout_remove(device->disconn_timer);
device->disconn_timer = 0;
}

@@ -4268,7 +4269,7 @@ void device_set_le_support(struct btd_device *device, uint8_t bdaddr_type)
store_device_info(device);
}

-static gboolean device_disappeared(gpointer user_data)
+static bool device_disappeared(gpointer user_data)
{
struct btd_device *dev = user_data;

@@ -4291,11 +4292,11 @@ void device_update_last_seen(struct btd_device *device, uint8_t bdaddr_type)

/* Restart temporary timer */
if (device->temporary_timer)
- g_source_remove(device->temporary_timer);
+ timeout_remove(device->temporary_timer);

- device->temporary_timer = g_timeout_add_seconds(btd_opts.tmpto,
+ device->temporary_timer = timeout_add_seconds(btd_opts.tmpto,
device_disappeared,
- device);
+ device, NULL);
}

/* It is possible that we have two device objects for the same device in
@@ -4482,12 +4483,12 @@ void device_remove(struct btd_device *device, gboolean remove_stored)

if (btd_device_is_connected(device)) {
if (device->disconn_timer > 0)
- g_source_remove(device->disconn_timer);
+ timeout_remove(device->disconn_timer);
disconnect_all(device);
}

if (device->temporary_timer > 0) {
- g_source_remove(device->temporary_timer);
+ timeout_remove(device->temporary_timer);
device->temporary_timer = 0;
}

@@ -5636,7 +5637,7 @@ int device_discover_services(struct btd_device *device)
err = device_browse_gatt(device, NULL);

if (err == 0 && device->discov_timer) {
- g_source_remove(device->discov_timer);
+ timeout_remove(device->discov_timer);
device->discov_timer = 0;
}

@@ -5689,7 +5690,7 @@ void btd_device_set_temporary(struct btd_device *device, bool temporary)
device->temporary = temporary;

if (device->temporary_timer) {
- g_source_remove(device->temporary_timer);
+ timeout_remove(device->temporary_timer);
device->temporary_timer = 0;
}

@@ -5701,9 +5702,9 @@ void btd_device_set_temporary(struct btd_device *device, bool temporary)
device->disable_auto_connect = TRUE;
device_set_auto_connect(device, FALSE);
}
- device->temporary_timer = g_timeout_add_seconds(btd_opts.tmpto,
+ device->temporary_timer = timeout_add_seconds(btd_opts.tmpto,
device_disappeared,
- device);
+ device, NULL);
return;
}

@@ -5934,7 +5935,7 @@ bool device_is_connectable(struct btd_device *device)
return (device->ad_flags[0] & 0x03);
}

-static gboolean start_discovery(gpointer user_data)
+static bool start_discovery(gpointer user_data)
{
struct btd_device *device = user_data;

@@ -6083,7 +6084,7 @@ void device_bonding_complete(struct btd_device *device, uint8_t bdaddr_type,
/* If we are initiators remove any discovery timer and just
* start discovering services directly */
if (device->discov_timer) {
- g_source_remove(device->discov_timer);
+ timeout_remove(device->discov_timer);
device->discov_timer = 0;
}

@@ -6100,10 +6101,10 @@ void device_bonding_complete(struct btd_device *device, uint8_t bdaddr_type,
* active discovery or discovery timer, set discovery
* timer */
DBG("setting timer for reverse service discovery");
- device->discov_timer = g_timeout_add_seconds(
+ device->discov_timer = timeout_add_seconds(
DISCOVERY_TIMER,
start_discovery,
- device);
+ device, NULL);
}
}
}
@@ -6142,8 +6143,11 @@ unsigned int device_wait_for_svc_complete(struct btd_device *dev,
if (state->svc_resolved || !btd_opts.reverse_discovery)
cb->idle_id = g_idle_add(svc_idle_cb, cb);
else if (dev->discov_timer > 0) {
- g_source_remove(dev->discov_timer);
- dev->discov_timer = g_idle_add(start_discovery, dev);
+ timeout_remove(dev->discov_timer);
+ dev->discov_timer = timeout_add_seconds(
+ 0,
+ start_discovery,
+ dev, NULL);
}

return cb->id;
diff --git a/src/main.c b/src/main.c
index 572dc939c..c32bda7d4 100644
--- a/src/main.c
+++ b/src/main.c
@@ -41,6 +41,7 @@

#include "shared/att-types.h"
#include "shared/mainloop.h"
+#include "shared/timeout.h"
#include "lib/uuid.h"
#include "shared/util.h"
#include "btd.h"
@@ -853,7 +854,7 @@ void btd_exit(void)
mainloop_quit();
}

-static gboolean quit_eventloop(gpointer user_data)
+static bool quit_eventloop(gpointer user_data)
{
btd_exit();
return FALSE;
@@ -868,8 +869,8 @@ static void signal_callback(int signum, void *user_data)
case SIGTERM:
if (!terminated) {
info("Terminating");
- g_timeout_add_seconds(SHUTDOWN_GRACE_SECONDS,
- quit_eventloop, NULL);
+ timeout_add_seconds(SHUTDOWN_GRACE_SECONDS,
+ quit_eventloop, NULL, NULL);

mainloop_sd_notify("STATUS=Powering down");
adapter_shutdown();
diff --git a/src/sdp-client.c b/src/sdp-client.c
index 55f5bc323..71d3d9e95 100644
--- a/src/sdp-client.c
+++ b/src/sdp-client.c
@@ -21,6 +21,7 @@
#include "lib/sdp_lib.h"

#include "btio/btio.h"
+#include "shared/timeout.h"
#include "log.h"
#include "sdp-client.h"

@@ -31,7 +32,7 @@ struct cached_sdp_session {
bdaddr_t src;
bdaddr_t dst;
sdp_session_t *session;
- guint timer;
+ unsigned int timer;
guint io_id;
};

@@ -44,7 +45,7 @@ static void cleanup_cached_session(struct cached_sdp_session *cached)
g_free(cached);
}

-static gboolean cached_session_expired(gpointer user_data)
+static bool cached_session_expired(gpointer user_data)
{
struct cached_sdp_session *cached = user_data;

@@ -66,7 +67,7 @@ static sdp_session_t *get_cached_sdp_session(const bdaddr_t *src,
if (bacmp(&c->src, src) || bacmp(&c->dst, dst))
continue;

- g_source_remove(c->timer);
+ timeout_remove(c->timer);
g_source_remove(c->io_id);

session = c->session;
@@ -85,7 +86,7 @@ static gboolean disconnect_watch(GIOChannel *chan, GIOCondition cond,
{
struct cached_sdp_session *cached = user_data;

- g_source_remove(cached->timer);
+ timeout_remove(cached->timer);
cleanup_cached_session(cached);

return FALSE;
@@ -107,9 +108,9 @@ static void cache_sdp_session(bdaddr_t *src, bdaddr_t *dst,

cached_sdp_sessions = g_slist_append(cached_sdp_sessions, cached);

- cached->timer = g_timeout_add_seconds(CACHE_TIMEOUT,
+ cached->timer = timeout_add_seconds(CACHE_TIMEOUT,
cached_session_expired,
- cached);
+ cached, NULL);

/* Watch the connection state during cache timeout */
sk = sdp_get_socket(session);
--
2.18.0