diff --git a/src/adapter.c b/src/adapter.c
index 9e9f67d..0370358 100644
--- a/src/adapter.c
+++ b/src/adapter.c
};
struct btd_adapter {
- unsigned int ref_count;
+ int ref_count;
uint16_t dev_id;
struct mgmt *mgmt;
struct btd_adapter *btd_adapter_ref(struct btd_adapter *adapter)
{
- adapter->ref_count++;
-
- DBG("%p: ref_count=%u", adapter, adapter->ref_count);
+ __sync_fetch_and_add(&adapter->ref_count, 1);
return adapter;
}
void btd_adapter_unref(struct btd_adapter *adapter)
{
- gchar *path;
-
- adapter->ref_count--;
-
- DBG("%p: ref_count=%u", adapter, adapter->ref_count);
+ char *path;
- if (adapter->ref_count > 0)
+ if (__sync_sub_and_fetch(&adapter->ref_count, 1))
return;
if (!adapter->path) {