diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/adapter.c | 31 | 
1 files changed, 18 insertions, 13 deletions
| diff --git a/src/adapter.c b/src/adapter.c index 93db68bd..e106ae11 100644 --- a/src/adapter.c +++ b/src/adapter.c @@ -1904,6 +1904,20 @@ static void load_devices(struct btd_adapter *adapter)  								adapter);  } +static void probe_driver(gpointer data, gpointer user_data) +{ +	struct btd_adapter *adapter = data; +	struct btd_adapter_driver *driver = user_data; +	int err; + +	if (!adapter->up) +		return; + +	err = driver->probe(adapter); +	if (err < 0) +		error("%s: %s (%d)", driver->name, strerror(-err), -err); +} +  static void load_drivers(struct btd_adapter *adapter)  {  	GSList *l; @@ -1911,8 +1925,10 @@ static void load_drivers(struct btd_adapter *adapter)  	for (l = adapter_drivers; l; l = l->next) {  		struct btd_adapter_driver *driver = l->data; -		if (driver->probe) -			driver->probe(adapter); +		if (driver->probe == NULL) +			continue; + +		probe_driver(adapter, driver);  	}  } @@ -2731,17 +2747,6 @@ gboolean adapter_has_discov_sessions(struct btd_adapter *adapter)  	return TRUE;  } -static void probe_driver(gpointer data, gpointer user_data) -{ -	struct btd_adapter *adapter = data; -	struct btd_adapter_driver *driver = user_data; - -	if (!adapter->up) -		return; - -	driver->probe(adapter); -} -  int btd_register_adapter_driver(struct btd_adapter_driver *driver)  {  	GSList *adapters; | 
